Name_Not_Found<>sage<>2013/09/21(土) 23:00:45.82 ID:???<> JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4のテンプレを読んだ上で質問してください。

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。(なりすまし及び煽り防止のため)
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。質問テンプレートを活用してみてください。

■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/ <>+ JavaScript の質問用スレッド vol.109 + Name_Not_Found<>sage<>2013/09/21(土) 23:01:45.13 ID:???<> ■前スレ
+ JavaScript の質問用スレッド vol.108 +
http://toro.2ch.net/test/read.cgi/hp/1378462421/l50

■過去スレ全集
http://www2.atpages.jp/mirror/2ch/javascript/
http://usamimi.info/~mirrorhenkan/2ch/javascript/ (閲覧のみ)

■テンプレ案
http://jsfiddle.net/fH4cC/21/show/

■関連スレ
ECMAScript デス 4
http://toro.2ch.net/test/read.cgi/tech/1325448978/
【jQuery】JavaScript ライブラリ総合質問所 vol.3
http://toro.2ch.net/test/read.cgi/hp/1369444026/
WSH(・∀・)スレッド! Part 5
http://toro.2ch.net/test/read.cgi/tech/1350201791/
【WHATWG】HTML5 Part4【W3C HTML WG】
http://toro.2ch.net/test/read.cgi/hp/1329529892/
Webサイト制作初心者用質問スレ part236
http://toro.2ch.net/test/read.cgi/hp/1329529892/
CSS初心者スレッド=12th=
http://toro.2ch.net/test/read.cgi/hp/1343429848/
Canvasについて語ろう
http://toro.2ch.net/test/read.cgi/hp/1305093769/ <> Name_Not_Found<>sage<>2013/09/21(土) 23:02:30.44 ID:???<> ■主要FAQ (全部は http://fiddle.jshell.net/vSqKr/33/show/ )
Q1. 別窓・フレーム内容やローカルファイルを読み書きしたいのですが…
A1. 別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。
Q2. document.write()でページ内容を追加したいのですが…
A2. 一度表示完了後にwriteするとページ内容が消去されます。DOM等別手段を。
Q3. table内容のinnerHTMLやDOMでの変更がうまく行かないのですが…
A3. IEではtable/tbody/trのinnerHTML書き換え不可です。DOMを使いますが、
  DOMの場合tableの直下にはtbody要素が(作らなくても)あることに注意。
Q4. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A4. 「document.forms.myform.elements[変数名].value」でどぞ。
  JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
  グローバル変数はwindowのプロパティなので「x」と「window['x']」も。
Q5. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A5. 取得には document.defaultView.getComputedStyle() を使う必要あり。
  IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q6. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A6. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
Q7. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
  「"...this..."」とか「function(){...this...}」ではうまく行きません。
A7. 実行時にthisが別のものを指してしまってる。以下のようにthisを束縛保存。
  「function(x){return function(){...x...};}(this)」
Q8. input type="file"の値を設定(参照)できないのですが…
A8. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q9. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A9. コード実行時点でHTMLがそこまで読まれてない。window.onload 中でやるとか <> Name_Not_Found<>sage<>2013/09/21(土) 23:03:27.68 ID:???<> ■主要FAQ (全部は http://fiddle.jshell.net/vSqKr/33/show/ )
Q1. 別窓・フレーム内容やローカルファイルを読み書きしたいのですが…
A1. 別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。
Q2. document.write()でページ内容を追加したいのですが…
A2. 一度表示完了後にwriteするとページ内容が消去されます。DOM等別手段を。
Q3. table内容のinnerHTMLやDOMでの変更がうまく行かないのですが…
A3. IEではtable/tbody/trのinnerHTML書き換え不可です。DOMを使いますが、
  DOMの場合tableの直下にはtbody要素が(作らなくても)あることに注意。
Q4. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A4. 「document.forms.myform.elements[変数名].value」でどぞ。
  JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
  グローバル変数はwindowのプロパティなので「x」と「window['x']」も。
Q5. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A5. 取得には document.defaultView.getComputedStyle() を使う必要あり。
  IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q6. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A6. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
Q7. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
  「"...this..."」とか「function(){...this...}」ではうまく行きません。
A7. 実行時にthisが別のものを指してしまってる。以下のようにthisを束縛保存。
  「function(x){return function(){...x...};}(this)」
Q8. input type="file"の値を設定(参照)できないのですが…
A8. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q9. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A9. コード実行時点でHTMLがそこまで読まれてない。window.onload 中でやるとか <> Name_Not_Found<><>2013/09/21(土) 23:25:21.28 ID:31XAV7Zv<> >>1 乙!! <> Name_Not_Found<>sage<>2013/09/22(日) 00:09:28.73 ID:???<> 前スレからです。
よろしくおねがいします。

書き込み不可なはずのプロパティに、
何度か書き込みをかけたり、その作業をする関数を何度か呼ぶと、
Chromeでは書き込みができてしまい、困惑しています。
これはブラウザのバグなのでしょうか?

Object.defineProperty(Object.prototype,'0',{set:function (v){this.first_value=v}});

function test1(){
var a=[];
a[0]=123;
return a[0];
}

function test2(){
var a=[];
for(var i=0;i<100;i++)a[0]=123;
return a[0];
}

test1() //undefined
test1() //123
test1() //123

test2() //123 <> Name_Not_Found<>sage<>2013/09/22(日) 00:34:50.21 ID:???<> nullがオブジェクトでtrueやfalseが違うのは何故ですか? <> Name_Not_Found<>sage<>2013/09/22(日) 00:39:23.51 ID:???<> >>6
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
Array オブジェクトの length プロパティの再定義
>Chrome のバージョンでは一部の状況において、配列の現在の length プロパティと異なる値の length を無視し、
>また書き込み許可の変更は一部の状況において暗黙的に動作しないようです。 <> Name_Not_Found<>sage<>2013/09/22(日) 00:46:10.92 ID:???<> >>8
貴重な情報、大変大変ありがとうございます。 <> Name_Not_Found<>sage<>2013/09/22(日) 01:25:24.64 ID:???<> php+Jascrip+jQuerytでAjaxの勉強してるが、なんか、かなり難しいな
全然簡単じゃないやん。
仕事ではJavaで使ってるが、いつかphp+Jascrip+jQuerytでAjaxの勉強
してたことが生かされるときってきますかね? <> Name_Not_Found<>sage<>2013/09/22(日) 01:34:39.07 ID:???<> ジャスクリップ?
ジェイクエリート? <> 10<>sage<>2013/09/22(日) 01:42:39.67 ID:???<> ミスった
☓Jascrip
○Javascript <> Name_Not_Found<>sage<>2013/09/22(日) 01:56:07.92 ID:???<> 検索力と根気が役に立つ <> 10<>sage<>2013/09/22(日) 02:20:12.19 ID:???<> >>13
なるほどな。
不具合情報とか、Javascript、phpのプログラムの本の間違えとか
ブログで指摘しまくってたら、1日20〜30人くらい人が来るようになった。
特定の不具合情報検索したらオレのブログがグーグルで1番目にくるのは
ちょっと達成感ある。 <> Name_Not_Found<>sage<>2013/09/22(日) 05:44:56.01 ID:???<> ショボww <> Name_Not_Found<>sage<>2013/09/22(日) 09:38:21.44 ID:???<> alertの件は結果でたの? <> Name_Not_Found<>sage<>2013/09/22(日) 10:17:55.98 ID:???<> 16進数の桁揃えを一番シンプルにする方法は何ですか?
ff→00ff(4桁)
など <> Name_Not_Found<>sage<>2013/09/22(日) 11:12:37.24 ID:???<> ('000'+(s.toString(16)).slice(-4)
以上にシンプルな方法ありますか? <> Name_Not_Found<>sage<>2013/09/22(日) 11:56:30.09 ID:???<> (num+0x10000).toString(16).slice(-4)
とか。 <> Name_Not_Found<>sage<>2013/09/22(日) 12:17:01.18 ID:???<> 0x0aを
var a = 0x0a;
これを文字列"0x0a"にする方法を教えて
String(a)だと"10"に変換されるからダメ <> Name_Not_Found<>sage<>2013/09/22(日) 12:22:57.24 ID:???<> >>20
すぐ上のレスでもダメなのか <> Name_Not_Found<>sage<>2013/09/22(日) 12:27:59.90 ID:???<> どちらがシンプルかは判断が難しかったので速度比較したら、
IEやfirefoxでは桁あふれの方が速かったので、そうします
http://jsperf.com/ketaawase
ありがとうございました <> Name_Not_Found<>sage<>2013/09/22(日) 12:38:00.31 ID:???<> 10進数ならIntlAPIが便利だから覚えておくといいよ。 <> Name_Not_Found<>sage<>2013/09/22(日) 13:39:48.67 ID:???<> 与えられた文字を使って、指定した長さの文字列(文字の重複もOK)の全組み合わせ

var a = ["a","b", "c", "d", "e"];
for(var i=0; i<a.length; i++) {
for(var k=0; k<a.length; k++) {
for(var j=0; j<a.length; j++) {
console.log(a[i] + a[k] + a[j]);
}
}
}

これは5つの文字を使って、長さが3の文字列の組み合わせを出力している
でも、長さを5にしたり10にしたり変更する場合いちいちforを追加してやらなければならない
どうやって改善すればいいか教えて <> Name_Not_Found<>sage<>2013/09/22(日) 14:03:52.46 ID:???<> >>24
この例なら、5進数3桁と考えてみるとか。 <> Name_Not_Found<>sage<>2013/09/22(日) 14:06:50.84 ID:???<> 5進数3桁だから、繰り返し回数は5^3。
カウンタを回しながら、('00'+count.toString(5)).slice(-3)して、
各々の桁に対応する文字を取り出す。 <> Name_Not_Found<>sage<>2013/09/22(日) 14:08:31.76 ID:???<> 文盲ばっかり <> Name_Not_Found<>sage<>2013/09/22(日) 14:18:02.96 ID:???<> 参照を保持したまま配列の要素を全て削除するにはどうしたらいいですか?
var a = [1,2,3,4];
var b = a;
var a = [];
console.dir(b);
こうすると、aがbとは別配列になってしまいます
delete(a[0]);
とすれば、参照を保持したまま要素の内容は削除できますが、
要素数が減りません <> Name_Not_Found<>sage<>2013/09/22(日) 14:18:12.95 ID:???<> >>27
お前が盲目じゃね? <> Name_Not_Found<>sage<>2013/09/22(日) 14:19:55.51 ID:???<> while (a.pop());
で出来ました
失礼しました <> Name_Not_Found<>sage<>2013/09/22(日) 14:20:16.25 ID:???<> >>28
別配列じゃダメなん?って思ってしまうが、

var a = [1,2,3,4];
a.length = 0; <> Name_Not_Found<>sage<>2013/09/22(日) 14:20:49.20 ID:???<> a.splice(0,a.length);
の方がいいですね <> Name_Not_Found<>sage<>2013/09/22(日) 14:21:12.61 ID:???<> >>31の勝利だろw <> Name_Not_Found<>sage<>2013/09/22(日) 14:22:03.42 ID:???<> >>31
そんな方法もあったのですね
ありがとうございました <> Name_Not_Found<>sage<>2013/09/22(日) 14:23:54.80 ID:???<> >>24

a = ['a', 'b', 'c', 'd', 'e']

let dup=(a,i,s='',b=[])=>i?a.forEach(v=>dup(a,i-1,s+v,b))||b:b.push(s)

s = dup(a,2) //["aa","ab","ac","ad","ae","ba","bb",...... <> Name_Not_Found<>sage<>2013/09/22(日) 14:24:33.10 ID:???<> >>33
勝利とか、そういう低レベルな話ではないのです <> Name_Not_Found<>sage<>2013/09/22(日) 14:25:24.17 ID:???<> dup(a,2).forEach(s=>console.log(s)) <> Name_Not_Found<>sage<>2013/09/22(日) 14:25:54.13 ID:???<> >>35
すげえ <> Name_Not_Found<>sage<>2013/09/22(日) 14:27:43.79 ID:???<> >>25-26
それだと文字の種類が増えたときと長さの変更に耐えられないし的外れ <> Name_Not_Found<>sage<>2013/09/22(日) 14:31:40.67 ID:???<> >>39
桁数や文字種が数字になってるんだから、そこはなんとかできるでしょ。 <> Name_Not_Found<>sage<>2013/09/22(日) 14:36:45.09 ID:???<> >>35
ES3版

var dup=function(a,i,s,b){
if(!s)s=''
if(!b)b=[]
if(i){
for(var j=0;j<a.length;j++){
dup(a,i-1,s+a[j],b)
}
return b
}
b.push(s)
} <> Name_Not_Found<>sage<>2013/09/22(日) 14:50:11.59 ID:???<> オブジェクトを加工する時は、なるべく参照を保持したまま加工した方が
ガベージコレクションは減りますよね?
別オブジェクトを作成するタイプの関数を破壊的な関数に置き換えたらパフォーマンスが上がる
これは正しいですか? <> Name_Not_Found<>sage<>2013/09/22(日) 14:53:40.94 ID:???<> 可読性をあげた版

function dup(ary, i, str, ret) {
 if ( !str ) str = '';
 if ( !ret ) ret = [];

 if (i) {
  for (var j = 0; j < ary.length; j++) {
   var char = ary[j];
   dup(ary, i-1, str+char, ret);
  }
  return ret;
 }
 ret.push(str);
} <> Name_Not_Found<>sage<>2013/09/22(日) 14:54:05.48 ID:???<> 具体的にコード貼れ
書いてることが根本的に矛盾してるから意図が分からん <> Name_Not_Found<>sage<>2013/09/22(日) 14:54:42.62 ID:???<> >>42
ベンチマークが全て
まずやってから書き込んでくれ。 <> Name_Not_Found<>sage<>2013/09/22(日) 14:59:55.09 ID:???<> 「なるべく参照を保持したまま加工」ってどういうこと?
参照を保持しないと加工なんて出来ないじゃん
クロージャでの変数キャッシュとパフォーマンスの関係を聞いてる?
でも何でGCが出てくるのかがわからん <> Name_Not_Found<>sage<>2013/09/22(日) 15:10:34.95 ID:???<> >>43を改良してみた

function dup(ary, i) {
 var ret = [];

 function dup_deep(i, str) {
  if (i) {
   for (var j = 0; j < ary.length; j++) {
    dup_deep(i-1, str+ary[j]);
   }
  }
  ret.push(str);
 }
 dup_deep(i, '');
 return ret;
}

var a = ['a', 'b', 'c', 'd', 'e'];
console.log(dup(a, 2)); <> Name_Not_Found<>sage<>2013/09/22(日) 15:14:08.28 ID:???<> http://jsperf.com/yousosuushitei

arrayに最初から要素を与えるか与えないかのベンチマークを取りました
指定した場合、firefoxとchromeで、かなりパフォーマンスアップしました
しかしIEでは遅くなりました
IEで遅くならないようにする方法ありますか? <> Name_Not_Found<>sage<>2013/09/22(日) 15:20:01.25 ID:???<> それはIEが仕様的に悪いとは言わないが、最適化が弱い部分

但しV8は64Kを超えるノードは後から追加してくれと1年前の公演で言っていた
今は分からないが、まあ本当に色んな条件が絡んでくるだろうね

まあ、2つ言えるとしたら、new Array(lowLength)はここ数年は優位
確実性を求めるのなら、数値配列であればTypedArrayを使う <> Name_Not_Found<>sage<>2013/09/22(日) 16:01:44.16 ID:???<> <script src="lodash.js"></script>
<script>
function dup(list, len) {
  return (function deep(i, str) {
    return i
      ? _(list).reduce(function (sum, ch) {
         return sum.concat(deep(i-1, str+ch))
       }, [])
      : str
  })(len, '')
}

var a = ['a', 'b', 'c', 'd', 'e'];
console.log(dup(a, 2));
</script>


lodashを使って、ES3でも動くようにして
読みやすさを保ったまま、ぎりぎりまでコードを絞った。
pushはなんかださいのでやめた。

まあ、好きな方を選んでくれ。

let dup=(a,i,s='',b=[])=>i?a.forEach(v=>dup(a,i-1,s+v,b))||b:b.push(s) <> Name_Not_Found<>sage<>2013/09/22(日) 16:03:55.61 ID:???<> tiddywikiってあるじゃないですか
あれどうやってファイルに書き込みしてるんですか? <> Name_Not_Found<>sage<>2013/09/22(日) 16:11:35.04 ID:???<> 2つ3つでいいのならこうも書ける

dup = [ v1+v2 for (v1 of arr) for (v2 of arr) ]
// 現firefox

dup = [ for (v1 of arr) for (v2 of arr) v1+v2 ]
// ES6? <> Name_Not_Found<>sage<>2013/09/22(日) 16:14:27.66 ID:???<> >>51
アドオン経由 <> 50<>sage<>2013/09/22(日) 16:21:55.40 ID:???<> >>50をベースにlodashを取り除いてES5専用にした。
といっても _ を取り除いただけだけどw

function dup(list, len) {
  return (function deep(i, str) {
    return i
      ? list.reduce(function (sum, ch) {
         return sum.concat(deep(i-1, str+ch))
       }, [])
      : str
  })(len, '')
}

アロー関数に置き換えた

function dup(list, len) {
  var deep = (i, str) =>
    i
      ? list.reduce((sum, ch) =>
        sum.concat(deep(i-1, str+ch))
       , [])
      : str

  return deep(len, '')
}

行数を減らした

function dup(list, len) {
  var deep = (i, str) => i ? list.reduce((sum, ch) => sum.concat(deep(i-1, str+ch)) , []) : str
  return deep(len, '')
} <> Name_Not_Found<>sage<>2013/09/22(日) 16:26:19.39 ID:???<> 現状サポートされているダウンロードAPIじゃ何かを妥協しないといけない

A.FileAPI
1.好きなタイミング、構造を指定できるが、ルートはブラウザが決めた特定の場所になる
2.内容とフォルダ構造は概ね保たれるが、外から見た時名前は飛ぶ

B.AnchorDownload
1.ブラウザの設定によって保存ダイアログが出るか、デフォルトの場所に保存される
2.どんなファイルでも壊れずに保存できるが、上書きや読み込みはユーザー手動 <> Name_Not_Found<>sage<>2013/09/22(日) 16:27:00.93 ID:???<> >>49
ありがとうございました <> 50<>sage<>2013/09/22(日) 16:28:20.70 ID:???<> デフォルトパラメータを使った

var dup = (list, i, str='') => i ? list.reduce((sum, ch) => sum.concat(dup(list, i-1, str+ch)) , []) : str

>>35に合わせて名前をわかりにくくして可読性を下げたw
var dup = (a, i, s='') => i ? a.reduce((b, v) => b.concat(dup(a, i-1, s+v)) , []) : s

>>35に合わせて空白を削ってさらに可読性を下げたw
var dup=(a,i,s='')=>i?a.reduce((b,v)=>b.concat(dup(a,i-1,s+v)),[]):s
(69文字)

>>35と比較してみた
let dup=(a,i,s='',b=[])=>i?a.forEach(v=>dup(a,i-1,s+v,b))||b:b.push(s)
(71文字)

勝ったw ひとしきり遊んだ
まあ面白かったよ。 <> Name_Not_Found<>sage<>2013/09/22(日) 16:30:06.65 ID:???<> こいつプログラム板で暴れてる通称巨人様だから相手しなくていいぞ <> Name_Not_Found<>sage<>2013/09/22(日) 16:31:15.81 ID:???<> 巨人様のファンですか?
いつも巨人様のことを考えていそうですねw <> Name_Not_Found<>sage<>2013/09/22(日) 16:36:24.35 ID:???<> 出張乙 <> 50<>sage<>2013/09/22(日) 16:43:50.90 ID:???<> >>58
別に俺は巨人様じゃないし、そもそも巨人様なんて知らんし。
進撃の巨人のネタか? 見てないから知らん。

それよりお前(>>58)が、その巨人様と
なにか言い争っていたやつだってことは
はっきりわかってるぞ。
自分で告白したようなもんだからなw <> Name_Not_Found<>sage<>2013/09/22(日) 16:59:32.50 ID:???<> はい、次行こか。 <> Name_Not_Found<>sage<>2013/09/22(日) 17:25:02.66 ID:???<> 巨人様ほっといて次行けるわけ無いだろ。 <> Name_Not_Found<>sage<>2013/09/22(日) 17:30:55.57 ID:???<> 巨人は自称
【PHP,Python】スクリプト,バトルロワイヤル38【Perl,Ruby】
681 . デフォルトの名無しさん 2013/09/16(月) 01:01:27.49
狂人にはもう触るな…
682 . デフォルトの名無しさん 2013/09/16(月) 01:02:23.75
そう。巨人には手を出しても負けるだけw <> Name_Not_Found<>sage<>2013/09/22(日) 17:37:28.98 ID:???<> >>64
詳しいなw

一つ忠告しといてあげるよ。
勝った方は、誰に勝ったかなんて覚えてないが、
負けた方は、相手のことを忘れられないんだ。

それが匿名掲示板だと、気に入らない相手全てが
「ヤツなんだ!」って思うようになってしまうよ。
精神病の始まりだねw <> Name_Not_Found<>sage<>2013/09/22(日) 17:37:53.48 ID:???<> 巨人だか何だか知らんがどうでもいいだろ
スレに沿った話なんだから
巨人自体の話はスレ違い <> Name_Not_Found<>sage<>2013/09/22(日) 17:38:04.07 ID:???<> >>57,59,61,65
>>64
あっ……(察し) <> Name_Not_Found<>sage<>2013/09/22(日) 17:38:23.62 ID:???<> 誰が巨人の話をしだしたんだろうね。
まったく迷惑だ。 <> Name_Not_Found<>sage<>2013/09/22(日) 17:39:04.62 ID:???<> >>67
お前がスレの邪魔してるって自覚してる? <> Name_Not_Found<>sage<>2013/09/22(日) 17:39:10.15 ID:???<> >>66
あんまり自演してるとさるさんになりますよ <> Name_Not_Found<>sage<>2013/09/22(日) 17:39:48.24 ID:???<> 嵐にレスする奴も嵐です。 <> Name_Not_Found<>sage<>2013/09/22(日) 17:40:08.53 ID:???<> 最近ここに来た統合失調症の人か <> Name_Not_Found<>sage<>2013/09/22(日) 17:41:34.16 ID:???<> 〜〜〜ここまで全て2、3人による演劇〜〜〜




〜〜〜ここからも2、3人による演劇〜〜〜 <> Name_Not_Found<>sage<>2013/09/22(日) 17:43:32.54 ID:???<> >>64のスレ知ってるけど、
JS叩きが酷いんだよね。

多分、>>64はこのスレを荒らしに来たやつだろう。 <> Name_Not_Found<>sage<>2013/09/22(日) 18:06:14.68 ID:???<> ES3でも動くようにするなら、>>50
ES5専用でいいなら>>57の一番上のコードが
読みやすく一番バランスがとれてるって感じた。 <> Name_Not_Found<>sage<>2013/09/22(日) 18:24:46.55 ID:???<> プッw <> Name_Not_Found<>sage<>2013/09/22(日) 18:28:14.99 ID:???<> これが最後の捨て屁になればいいのに。 <> Name_Not_Found<>sage<>2013/09/22(日) 18:31:53.29 ID:???<> すげえなES5
いつから使えるんだぜ? <> Name_Not_Found<>sage<>2013/09/22(日) 18:34:33.10 ID:???<> みなのこころのなかに
それがES5なんだよね <> Name_Not_Found<>sage<>2013/09/22(日) 18:43:05.24 ID:???<> >>78
es5-shimみたいなのを使えば、
関数レベルで実装できるもの
(forEachやreduceなんか)は
今すぐ使える。 <> Name_Not_Found<>sage<>2013/09/22(日) 18:52:42.27 ID:???<> =>てのもES5なんでしょう? <> Name_Not_Found<>sage<>2013/09/22(日) 18:56:24.47 ID:???<> スレが伸びてると思ったらじゃれあいか。
仲がよろしくて結構。 <> Name_Not_Found<>sage<>2013/09/22(日) 19:11:24.20 ID:???<> let dup=(a,i,s='',b=[])=>i?a.forEach(v=>dup(a,i-1,s+v,b))||b:b.push(s)

var dup=(a,i,s='')=>i?a.reduce((b,v)=>b.concat(dup(a,i-1,s+v)),[]):s
じゃ機能が違うな。
後者は新しく作ることしか出来ないが、前者は続きや追加ができる。
まあパクリにできることなんてこれくらいが限界だろうけどw <> Name_Not_Found<>sage<>2013/09/22(日) 19:19:16.95 ID:???<> >>83
まじきちw
ワロチw <> Name_Not_Found<>sage<>2013/09/22(日) 19:30:56.85 ID:???<> A.B.C.D === "str"
が調べたい時、
if(A&amp;&amp;A.B&amp;&amp;A.B.C&amp;&amp;A.B.C.D === "str")
とするのが長ったらしくて嫌なのですが
簡潔な方法はありますか? <> Name_Not_Found<>sage<>2013/09/22(日) 20:16:36.92 ID:???<> new Array(num)で要素数を指定した後、
pushしすぎてもエラーも出ずに動作していますが、
指定した要素数を超えても特に問題はないのでしょうか? <> Name_Not_Found<>sage<>2013/09/22(日) 20:22:16.00 ID:???<> (function(){
new Array(100000000000000);
})()
ってやったら
ページを開いている間ずっとメモリ100000000000000byte分使われてしまうのですか? <> Name_Not_Found<>sage<>2013/09/22(日) 20:22:59.49 ID:???<> JavaScriptでベンチマークを取る正しい方法をおしえてください <> Name_Not_Found<>sage<>2013/09/22(日) 20:26:51.32 ID:???<> >>85これでどう?
http://ideone.com/EVzNzu

>>86
無いよ

>>87
No
var x = new Uint8Array(100000000000000)
とかならYes

>>88
1.console.time console.timeEndを使う
2.コンソールのプロファイリング機能を使う
3.>>22みたいなサイト使う <> Name_Not_Found<>sage<>2013/09/22(日) 20:45:24.66 ID:???<> ありがとうございました <> Name_Not_Found<>sage<>2013/09/22(日) 20:46:31.92 ID:???<> どのくらいのスキルがあればあごっちと対等になれますか? <> Name_Not_Found<>sage<>2013/09/22(日) 20:50:21.50 ID:???<> Webは広いんだから、これとこれとこれはできるみたいに
1つずつ極めて行けばいいよ

極める前に、これとこれとこれはやったことはある
これとこれとこれは知ってるってのを作るのも同じくらい大事だけど <> Name_Not_Found<>sage<>2013/09/22(日) 20:56:45.20 ID:???<> あごっちってさ
20代なのに家持ってるじゃないですか
やっぱりJavaScriptで家が買えるほど儲かるんですよね
だからさ
ぼくはあごっちを目標にしたいんです <> Name_Not_Found<>sage<>2013/09/22(日) 20:57:35.74 ID:???<> 新しい技術を見たら忘れないうちにメモしておいて
暇な時に概要の調べてちょっと試す
もう存在を忘れることはないなというとこまでやったらリストから消す <> Name_Not_Found<>sage<>2013/09/22(日) 20:58:14.91 ID:???<> なるほど、なるほど <> Name_Not_Found<>sage<>2013/09/22(日) 20:59:01.94 ID:???<> あごっちが2人いるよりあごっちが知らないことを知ってる人がいる方がいいに決まってる
あと儲けられるかは技術的な問題だけじゃない <> 50<>sage<>2013/09/22(日) 21:04:05.57 ID:???<> >>85
> A.B.C.D === "str"
> が調べたい時、
> if(A && A.B && A.B.C && A.B.C.D === "str")
> とするのが長ったらしくて嫌なのですが
> 簡潔な方法はありますか?

俺ならこう書くかな。関数名は適当だとしてまあとりあえずこういう関数を作っておく。
(ループの所とか、ECMAScritp5やUnderscore なんかが使える場合はそれに最適化しても良い)

function hoge(key) {
 var obj = window, keys = split('.', key);
 for(var i = 0; i < keys.length; i++) {
  if (obj === undefined) {
   return obj
  }
  obj = obj[i];
 }
 return obj;
}

後はこれだけで良い。

if( hoge('A.B.C.D') === "str")

下手にこってない素直なコードだと思う。 <> Name_Not_Found<>sage<>2013/09/22(日) 21:08:03.06 ID:???<> >>89

> >>85これでどう?
> http://ideone.com/EVzNzu
>
>
> if (hoge && hoge.fuga && hoge.fuga.puyo === 123) {}
> //↓
> if ($hoge.fuga.puyo.$ === 123) {}

それはさすがに書き方がダサい。
レビューがあれば、なんでこんなコード書いた?って
追求されるレベル。 <> Name_Not_Found<>sage<>2013/09/22(日) 21:17:28.86 ID:???<> try-catchでいい件 <> Name_Not_Found<>sage<>2013/09/22(日) 21:18:34.98 ID:???<> try-catchは例外を補足するものだから
こういう時に使うべきではないなあ。 <> Name_Not_Found<>sage<>2013/09/22(日) 21:31:22.64 ID:???<> 普通に&&で羅列するのが一番よくね <> Name_Not_Found<>sage<>2013/09/22(日) 21:32:23.66 ID:???<> >>96
技術以外に必要なこともおしえてください <> 85<>sage<>2013/09/22(日) 21:32:49.51 ID:???<> >>89>>97>>99>>101様回答ありがとうございます

>>89のコードか>>99の方法が簡潔でよいかなと思ったのですが、
こちらの環境ではずっとやってもも>>89のコードが動かせず、
また>>97のコードもいろいろしても動くようにならなさそうなので

>>100余り使うべきではない、>>101素直が一番ということですが、
一番簡潔で動く>>99で今回はしてみることにします
相談に乗っていただいてありがとうございました <> Name_Not_Found<>sage<>2013/09/22(日) 21:33:33.30 ID:???<> >>102
運、人脈、気性 <> Name_Not_Found<>sage<>2013/09/22(日) 21:34:04.87 ID:???<> スレ違い
てか誰か知らんけど個人の名前をあげるな <> Name_Not_Found<>sage<>2013/09/22(日) 21:36:11.76 ID:???<> >>97
グローバル変数オンリー
ワロチww <> Name_Not_Found<>sage<>2013/09/22(日) 21:38:03.92 ID:???<> でも別にエラーでもないのに使うのはtry catchの間違った使い方だよな
書くのが面倒くさいからって間違った使い方するのは本末転倒じゃないか <> Name_Not_Found<>sage<>2013/09/22(日) 21:39:05.07 ID:???<> そうか?
こういう時しか使うことないのに渋っても勿体無いじゃん <> Name_Not_Found<>sage<>2013/09/22(日) 21:41:23.03 ID:???<> JSONのパースの時はパース自体のtryと一緒にデータが正しいかのチェックに使うよ。 <> Name_Not_Found<>sage<>2013/09/22(日) 21:42:30.56 ID:???<> 例外の目的は無視できない形でエラーを出すことで、それ以外の目的では使うべきではない
ってコーディングルールの基本だろが <> Name_Not_Found<>sage<>2013/09/22(日) 21:43:33.70 ID:???<> しかもパフォーマンスも悪いし <> Name_Not_Found<>sage<>2013/09/22(日) 21:45:09.00 ID:???<> 質問者の要求に答えられ無かった奴らが何を言っても滑稽なだけ <> Name_Not_Found<>sage<>2013/09/22(日) 21:47:20.97 ID:???<> 随分頭お固い人ばかりっすね... <> Name_Not_Found<>sage<>2013/09/22(日) 21:49:18.42 ID:???<> 呆れ <> Name_Not_Found<>sage<>2013/09/22(日) 21:49:55.01 ID:???<> 哀れ <> Name_Not_Found<>sage<>2013/09/22(日) 21:50:32.40 ID:???<> 終れ <> Name_Not_Found<>sage<>2013/09/22(日) 21:53:54.04 ID:???<> >>105
一般人とJSerのプリンスを同じように扱うな! <> Name_Not_Found<>sage<>2013/09/22(日) 21:55:43.12 ID:???<> 私怨か何か知らんがまじうざい <> Name_Not_Found<>sage<>2013/09/22(日) 21:58:13.13 ID:???<> どこにも私怨要素ねえだろwwwwwww <> Name_Not_Found<>sage<>2013/09/22(日) 21:59:26.18 ID:???<> Perl界のdankogaiやJava界の結城のようにJavaScript界のプリンスも知らないとかお前恥ずかしいよ <> Name_Not_Found<>sage<>2013/09/22(日) 22:00:55.24 ID:???<> 2chに名前出されて喜ぶやつなんていねーから
ノリもなんか気持ち悪いし消えてくれや <> Name_Not_Found<>sage<>2013/09/22(日) 22:05:53.24 ID:???<> そんな事よりSublimeTextの話しようぜ <> Name_Not_Found<>sage<>2013/09/22(日) 22:31:35.91 ID:???<> 有名人が公に発表してる情報でいちいちうぜえだ気持ち悪いだ騒ぐなアスペ <> Name_Not_Found<>sage<>2013/09/22(日) 23:30:03.89 ID:???<> >>122
Pythonじゃなければモット良かった <> Name_Not_Found<>sage<>2013/09/22(日) 23:32:02.71 ID:???<> 俺もJavaScriptならいいのにって思ったけど
JavaScriptになるとプロセス使えないのかな? <> Name_Not_Found<>sage<>2013/09/22(日) 23:57:50.79 ID:???<> var a;
function disp(){
 console.log(a);
}
function init(){
 a=document.getElementById('a');
 disp();
}
これをdiv id="a"に対して実行するとHTMLDivElementとかが表示されます
disp()とinit()のスコープは違うと思うのですが
1行目のvar a;をなくしても同様に問題なく表示されます
1行目のvar a;は不要だと思いますか?
自分はif文でも同様に宣言してしまうのですがおかしいですか?

var a;
if (cond){
 a=1;
} else {
 a=2;
} <> Name_Not_Found<>sage<>2013/09/23(月) 00:18:04.87 ID:???<> >>103

>>97動くけどどういうこと?
君の中のレスで一番問題にしてないのは>>97みたいだけど。
(動かないという勘違い以外、何も言及していない)

>>106
グローバル変数って?
A.B.C.Dって言ってきたのは>>85だし、
A以外のグローバル変数がどれかわからない。 <> Name_Not_Found<>sage<>2013/09/23(月) 00:24:22.55 ID:???<> try-catchが簡潔ってよくわからんわ。
なんか自演っぽく見えるな。

if( hoge('A.B.C.D') === "str")

一行で済むのと

try {
if( A.B.C.D === "str") {}
} catch(e) {
}

無理やりやっても

var value; try { value = A.B.C.D } catch (e) {}
if( value === "str") {

簡潔? いやー、ありえんw
やっぱり自演だな。 <> Name_Not_Found<>sage<>2013/09/23(月) 00:26:29.99 ID:???<> >>126
disp()関数内にもinit()関数内にも変数aに対するvar宣言がないので、
変数aは外側のスコープの変数aを使う
両関数とも1行目で宣言されてる変数aになる

外側のスコープでも変数aがvar宣言されていない場合は、それはグローバル変数になる
つまり1行目のvar宣言がない場合も、両関数で同じグローバル変数aを使うことになる
この暗黙のグローバル変数の利用は推奨されない
つまり1行目のvar宣言は全体するべき

JavaScriptの場合if文のブロックはスコープをもたないので、
上のコードと下のコードは全然意味が違う <> Name_Not_Found<>sage<>2013/09/23(月) 00:31:45.39 ID:???<> >>126
初心者?

スコープの話をするなら aのスコープでしょ?w
aのスコープはdispとinit両方で同じa(1行目)を
参照しているのだから当然同じ。

普通に書くならこうだろうねー。

//var a;← グローバル変数は原則的に作っちゃダメ
function disp(){
 console.log(a); //変数 a は見えない
}
function init(){
 var a=document.getElementById('a');
 disp();
}


> 自分はif文でも同様に宣言してしまうのですがおかしいですか?
上のとは全く違う話になっているけど?

まあ俺ならこう書くね。
var a = cond ? 1 : 2; <> Name_Not_Found<>sage<>2013/09/23(月) 00:40:42.81 ID:???<> var a = 2;
if (cond) a = 1; <> Name_Not_Found<>sage<>2013/09/23(月) 00:43:34.18 ID:???<> CodeIQの古代文献の問題むずすぎ <> Name_Not_Found<>sage<>2013/09/23(月) 00:48:35.37 ID:???<> 星1個じゃん?w <> Name_Not_Found<>sage<>2013/09/23(月) 00:51:20.68 ID:???<> >>131
ないな。変数の再代入はできるだけ避けるべきだ。 <> 126<>sage<>2013/09/23(月) 01:04:44.49 ID:???<> >>129
ありがとうございます。
暗黙でそういうふうになるんですね。
ちゃんと宣言することにします。

>>130
関数のスコープの話だと思ったので。
そのコードだとaはinitのローカル変数に見えますが、
それでちゃんと動くんですね。びっくりしました。
初心者ってほど初心者ではないと思いますが、
ちょっと自分の中の常識が崩れちゃったので、
そのコードについてもっと調べたいと思います。

if文のやつはちょっと例が悪かったですね。
かえってややこしくしてすみません。
そっちの話は忘れてやってください。 <> Name_Not_Found<>sage<>2013/09/23(月) 01:06:23.25 ID:???<> disp(a)で受け渡すようにするほうが自然な感じがしないでもない <> Name_Not_Found<>sage<>2013/09/23(月) 01:06:29.94 ID:???<> 今荒らしがいるから解答者同士の絡みは避けるように
自演も出るだろうが気にしないようにがんばろう <> Name_Not_Found<>sage<>2013/09/23(月) 01:12:24.13 ID:???<> いちいち言わなくていいよ。
誰が荒らしかなんて見てわかるから。 <> Name_Not_Found<>sage<>2013/09/23(月) 01:14:03.57 ID:???<> 今っていうか、ずっといるだろ
単に人の足を引っ張りたいだけのクズはどんな質問スレにもいるよ <> Name_Not_Found<>sage<>2013/09/23(月) 01:18:37.61 ID:???<> >>135
>外側のスコープでも変数aがvar宣言されていない場合は、それはグローバル変数になる
>つまり1行目のvar宣言がない場合にも両関数で同じグローバル変数aを使うことになる
ここちょっと違った
関数内にも関数の外側のスコープにも存在しない変数への代入でグローバル変数が作成される
つまり1行目のvar宣言がない場合は、init()関数の代入でグローバル変数aが作成されて、
disp()関数でもそのグローバル変数を参照することになる <> Name_Not_Found<>sage<>2013/09/23(月) 02:24:08.17 ID:???<> n個プロパティがあるオブジェクトからobj[key]で値を得たい時かかる時間のオーダーって解りますか?
Arrayとそれ以外で違いますか? <> Name_Not_Found<>sage<>2013/09/23(月) 02:41:50.35 ID:???<> >>141
明らかに宿題だね。

まず意味を理解することから始めようかw <> Name_Not_Found<>sage<>2013/09/23(月) 04:28:10.98 ID:???<> >>130だとconsole.log(a)でエラーじゃないの? <> Name_Not_Found<>sage<>2013/09/23(月) 09:38:17.49 ID:???<> arrayの方が速い <> Name_Not_Found<>sage<>2013/09/23(月) 09:40:10.31 ID:???<> >>134
どんな理屈でそう思ってるのか知らないがその考えは改めるべきだ <> Name_Not_Found<>sage<>2013/09/23(月) 10:08:47.03 ID:???<> なんでそう思ってるのか気になる
再代入なんてプログラミングで普通のことだろ <> Name_Not_Found<>sage<>2013/09/23(月) 10:16:54.22 ID:???<> ごめん130みたら分かった
たしかにこういう再代入は綺麗じゃないわ <> Name_Not_Found<>sage<>2013/09/23(月) 10:18:47.88 ID:???<> 条件に沿った最終的な値を得る前に他の値を代入するのはアグリー
徐々に組み立てていくのならいいけど <> Name_Not_Found<>sage<>2013/09/23(月) 12:30:58.46 ID:???<> >>145
> どんな理屈でそう思ってるのか知らないが

まず、再代入でぐぐろう。

この話を知っていましたか?
知らなかったですか? <> Name_Not_Found<>sage<>2013/09/23(月) 13:53:06.40 ID:???<> それは再代入が遅いんじゃなくて代入が遅い話 <> Name_Not_Found<><>2013/09/23(月) 14:28:31.24 ID:GLYpuDbM<> EclipseでJSLint(プラグイン)使ってる人いますか?
検証を実行しても問題ビューに何も表示されない。
敢えて引っかかるようなコードを入れて
設定ファイル(検証オプション)を変更してみても効いてない。
設定のパスを変更するとエラーになるので
設定を読み込んでるのは確かなんだが・・・ <> Name_Not_Found<>sage<>2013/09/23(月) 14:57:24.00 ID:???<> >>149
その話がなんの話か具体的に言ってくれ
まさかJITがなんたらかんたらって勘違いしたネタじゃないだろうけど <> Name_Not_Found<>sage<>2013/09/23(月) 15:15:22.00 ID:???<> var state = INIT;
if (already_init) state = PROC;

こういう時は別にいいよね? <> Name_Not_Found<><>2013/09/23(月) 15:29:27.87 ID:0ZAG49Mx<> >>150
速い遅いのは無しなんかしていない。

>>152
再代入でぐぐったという証拠に
検索結果のトップ5つのタイトルを
ここにコピペしてくれ <> Name_Not_Found<>sage<>2013/09/23(月) 15:35:00.90 ID:???<> 何かを他人に伝える場合は自分の言葉ではっきりと伝えましょう <> Name_Not_Found<>sage<>2013/09/23(月) 15:39:01.12 ID:???<> >>154
お前がぐぐった内容を盾に話がしたいならそれをここに張ればいい <> Name_Not_Found<><>2013/09/23(月) 15:40:07.31 ID:0ZAG49Mx<> >>156
再代入の話をしたいだけだけど? <> Name_Not_Found<>sage<>2013/09/23(月) 15:41:15.62 ID:???<> お前が主張したことをここ書けばいいよ <> Name_Not_Found<><>2013/09/23(月) 15:52:30.05 ID:0ZAG49Mx<> だからそれが、Google検索結果の
トップ5だってばw <> Name_Not_Found<>sage<>2013/09/23(月) 15:54:29.16 ID:???<> 再代入でぐぐった記事やスライドにJavaScriptで再代入を使いたくない根本的に納得できる理由はなかったけど <> Name_Not_Found<>sage<>2013/09/23(月) 15:57:34.71 ID:???<> ほんとにプログラム板から移民してきちゃったんだなあ
ここは質問用スレッドなんで、突っ込んだ議論をしたいならプログラム板に帰ってやってくれ <> Name_Not_Found<>sage<>2013/09/23(月) 15:58:53.27 ID:???<> 再代入が嫌なら関数型言語だけ使っとけば良いよ <> Name_Not_Found<>sage<>2013/09/23(月) 17:22:55.72 ID:???<> 同じnameのradioボタン5つに対してチェックが変わったらイベントを起こしたいのですが、

for (var i = 0; i < radio.length; i++) { //radio.length=5
 radio[i].addEventListener('click', func, false);
}

今こんな感じにしています。
lengthが大きくなるほど何かが間違ってる気がしてならないのですが、
こんなのでいいのでしょうか?
なんかもっといい書き方があったらどんな感じにするのか教えてください。 <> Name_Not_Found<>sage<>2013/09/23(月) 17:25:37.13 ID:???<> $.(document).on('click', "セレクタ", function(){func()} <> Name_Not_Found<><>2013/09/23(月) 20:25:23.30 ID:GLYpuDbM<> どうもJSLintのサイトと同じような形式で
eclipseの問題ビューに一覧表示されるとばかり思ってたら、
各コード行の先頭に警告風のアイコンが表示されるっぽい。
アイコンにマウスを乗せるとツールチップで内容が表示される。
マニュアルと違う・・・というか見にくい・・・ツールチップ小さいし。
考えようによっては、わかりきったメッセージが繰り返し並ぶより
親切とも言えるんだろーか。

このプラグイン↓
ttp://www.htmlhifive.com/conts/web/view/tools/eclipse-jslint-plugin

とはいえ、ひとまず解決ということで <> Name_Not_Found<>sage<>2013/09/23(月) 20:28:34.54 ID:???<> >>42の件についてですが、配列の連結を非破壊的/破壊的で計測したところ、
破壊的連結の方が圧倒的に速かったです
http://jsperf.com/concat-vs-apply-push1
オブジェクトの新規生成はそれほどコストが高いということでしょうか
ありがとうございました <> Name_Not_Found<>sage<>2013/09/23(月) 20:41:09.69 ID:???<> 以前prototype.constructorなんて使ってる人いるの?と書いた者ですが、
stackoverflowに以下のようなオブジェクトのcloneをするコードがありました

function clone(obj){
if(obj == null || typeof(obj) != 'object')
return obj;

var temp = obj.constructor(); // changed

for(var key in obj)
temp[key] = clone(obj[key]);
return temp;
}

obj.constructorで呼び出されるのってprototype.constructorですよね
つまり使われるが正解でした
ありがとうございました <> Name_Not_Found<>sage<>2013/09/23(月) 20:54:30.00 ID:???<> >>166
concatさんの方は代入まで行ってるからそこまで遅いんだろ。

a.concat(b);
Array.prototype.push.apply(a, b);

処理内容だけを公平に比較するならこう。 <> Name_Not_Found<>sage<>2013/09/23(月) 21:00:03.87 ID:???<> function a(){
}

function b(){
}

function c(){
}

じゃだめなんですか?
thisとかconstructorとかapllyとか訳わかんないやつ使うメリットはなんですか? <> Name_Not_Found<>sage<>2013/09/23(月) 21:06:05.02 ID:???<> >>168
最終的にaに連結した配列が入っていて欲しいのだから
それでは正確にはなりません <> Name_Not_Found<>sage<>2013/09/23(月) 21:08:21.15 ID:???<> >>169
それで困らないプログラムを書いてるならそれでいい <> Name_Not_Found<>sage<>2013/09/23(月) 21:11:49.53 ID:???<> >>170
> 破壊的連結の方が圧倒的に速かったです

この結論がおかしい。 <> Name_Not_Found<>sage<>2013/09/23(月) 21:17:28.73 ID:???<> 目的ベースではなく処理単位ベースでの比較とすると
確かにおかしいかもしれませんが
現実的には有意味です <> Name_Not_Found<>sage<>2013/09/23(月) 21:21:07.65 ID:???<> jsperf落ちてたと思ったら
全てのテストがふっとんだ? <> Name_Not_Found<>sage<>2013/09/23(月) 21:21:18.37 ID:???<> > オブジェクトの新規生成はそれほどコストが高いということでしょうか

ベンチ内容と結論が全く結びついてないんだけどね <> Name_Not_Found<>sage<>2013/09/23(月) 21:22:28.90 ID:???<> push.applyはスタックをクソ消費するからNG <> Name_Not_Found<>sage<>2013/09/23(月) 21:24:53.07 ID:???<> >>175
concatではオブジェクトが新規作成されますよ
非破壊的メソッドとはそのようなものです <> Name_Not_Found<>sage<>2013/09/23(月) 21:33:49.41 ID:???<> >>177
意味不明…。

> オブジェクトの新規生成はそれほどコストが高いということでしょうか

この結論は、>>166の比較で concat のコストが高い理由が、
まるでオブジェクトの新規生成のみが原因とでも言ってる様なんだけど。
公平な比較もできてないのに。 <> Name_Not_Found<>sage<>2013/09/23(月) 22:05:32.33 ID:???<> どなたかぁ〜>>163お願いします <> Name_Not_Found<>sage<>2013/09/23(月) 22:15:00.80 ID:???<> >>178
代入が遅いと思い込んでいるようですが、代入=名前へのバインドのコストなど、
オブジェクトの新規作成と比べたらごくごく微々たるものですよ
http://jsperf.com/dainyuu
このように代入が一つだろうが二つだろうが差はないのです
むろん差はありますが、ベンチマークの処理に飲み込まれてしまうほどその差は小さいのです
これが事実です <> Name_Not_Found<>sage<>2013/09/23(月) 22:20:48.00 ID:???<> >>179
>>164 <> Name_Not_Found<>sage<>2013/09/23(月) 22:26:36.46 ID:???<> >>181
jQueryは使ったことないのですが、これはjQueryですよね?
具体的にセレクタって何をさせばいいんですか? <> Name_Not_Found<>sage<>2013/09/23(月) 22:28:23.32 ID:???<> if ( ['a','b','c'].indexOf(a) < 0 ){}

このような命令をループの中で実行する場合、
ループのたびに配列は別に作成されるのでしょうか? <> Name_Not_Found<>sage<>2013/09/23(月) 22:32:22.27 ID:???<> >>180
で、以下の 2つで比較しない訳は?

a.concat(b);
Array.prototype.push.apply(a, b); <> Name_Not_Found<>sage<>2013/09/23(月) 22:36:03.14 ID:???<> >>184
面倒くさいからです
気になるなら比較してみたらどうですか? <> 184<>sage<>2013/09/23(月) 22:44:15.57 ID:???<> いや、勘違いしてるのは俺の方だな。 <> Name_Not_Found<>sage<>2013/09/23(月) 23:09:37.26 ID:???<> >>182
<a>
<b>
</a>
だったら"a>b"がセレクタ
jqueryでああかいとけばわざわざradioをオブジェクトを入れなくてもいいし、radioを増やそうが減らそうがコードはあのままでおk <> Name_Not_Found<>sage<>2013/09/23(月) 23:10:44.20 ID:???<> とにかくJavaScripterなら読むべき本をあるだけ教えて <> Name_Not_Found<>sage<>2013/09/23(月) 23:14:24.82 ID:???<> >>187
おお!それはすごい
早速やってみます!
どうもご丁寧にありがとうございました <> Name_Not_Found<>sage<>2013/09/23(月) 23:24:05.70 ID:???<> >>184
push.applyはスタック大食らいだからNG
https://code.google.com/p/v8/issues/detail?id=2896 <> Name_Not_Found<>sage<>2013/09/23(月) 23:25:19.24 ID:???<> オライリーJavaScript第六版
オライリーJavaScript Good Parts
オライリー ハイパフォーマンスJavaScript
オライリー メンテナブルJavaScript <> Name_Not_Found<>sage<>2013/09/23(月) 23:27:28.37 ID:???<> O'Reilly以外には良本ないの!? <> Name_Not_Found<>sage<>2013/09/23(月) 23:30:40.09 ID:???<> 例えばこういう情報ってES5習得に必須だけど
オライリーの本には載ってるの?
http://constellation.hatenablog.com/entry/20101205/1291564928 <> Name_Not_Found<>sage<>2013/09/23(月) 23:34:13.69 ID:???<> JavaScript第六版に載ってるよ <> Name_Not_Found<>sage<>2013/09/23(月) 23:40:35.12 ID:???<> いや、MDNレベルでしか乗ってなかったからあえて皮肉で言ってるんだけど…… <> Name_Not_Found<>sage<>2013/09/24(火) 00:10:12.24 ID:???<> 俺はMDN読んでもいまいちよく分からんなぁと思ったけど、サイ本読んだら分かったけどね
そもそもさほどインパクトのある機能でもないと思う <> Name_Not_Found<>sage<>2013/09/24(火) 00:14:53.99 ID:???<> esprima&escodegenで関数中のvarを集めて関数の頭に持ってくるスクリプトが形になりました
varの散在したコードが一瞬でスマートになってかなりいい感じです
ただesprimaはコメントを文法ツリーと分けたデータにしていて
文法ツリーの書き換えをした場合、コメントの位置情報を修正するのが困難です
コメントも文法ツリーに入れていてくれれば楽だったのに。
どうすればいいですか? <> Name_Not_Found<>sage<>2013/09/24(火) 00:15:29.19 ID:???<> インパクトはないかもしれないがES5の数少ない機能の内の御三家だし、
ES5が下地になるES6やその先のためにも、この概念は中級者の必須項目として理解しておきたい <> Name_Not_Found<>sage<>2013/09/24(火) 00:16:12.31 ID:???<> ES8ってなにもうそんな話がでてたよ <> Name_Not_Found<><>2013/09/24(火) 00:24:25.25 ID:9UbBiTed<> >>193
いい加減宣伝やめてくれ。
うざいんだよ。 <> Name_Not_Found<><>2013/09/24(火) 00:33:53.38 ID:9UbBiTed<> >>197
でもさ、これからはletを使って、ブロックレベルのスコープやるでしょ?
その時どうやって元に戻すの? <> Name_Not_Found<>sage<>2013/09/24(火) 00:39:39.20 ID:???<> ES7で入りそうなもの

・ES6の補強(ES6に間に合わなかったもの)
・数値型系の大拡張(8xbit、巨大数、十進数、分数、複素数、その他SIMD系など)
・演算子の拡張(モジュロなどの追加)
・DOMからの逆輸入(PromiseやWorker)
・型情報付加(guard)
・部分マルチスレッド処理(Parallels)
・メタプロ大拡張(演算子オーバーロード、ValueProxy)
・遅延評価、遅延コール

それ以降か、無しになりそう

その他注目的な動向
・DOMがJS標準になる?
・typeof再設計の試み再び(typeofを設定可能に?、typeof null = "null") <> Name_Not_Found<>sage<>2013/09/24(火) 00:39:43.17 ID:???<> 元に戻すとは? <> Name_Not_Found<>sage<>2013/09/24(火) 00:40:22.89 ID:???<> >>200
心が醜いね
宣伝じゃないよ <> Name_Not_Found<>sage<>2013/09/24(火) 00:45:21.07 ID:???<> おれ馬鹿だからわからないけどこれ>>193でprototype汚染が解決されるの? <> Name_Not_Found<>sage<>2013/09/24(火) 00:47:55.79 ID:???<> good partsには、paerseIntが載っていて、parsefloatが載っていない
のは何故なのでしょうか?何か意味があるのでしょうか? <> Name_Not_Found<>sage<>2013/09/24(火) 00:48:41.96 ID:???<> 一言で言えば「解消される」だが、いろいろ言いたいことがあるな。
まず汚染というのがfor-in等での列挙の事であれば、それを使わなければいいし、そういう風潮になってきたこと。
それから>>193はそういう機能があることの説明ではなく、もっと踏み込んだものであること。 <> Name_Not_Found<>sage<>2013/09/24(火) 00:49:27.14 ID:???<> 綺麗に汚染できる <> Name_Not_Found<>sage<>2013/09/24(火) 00:49:43.92 ID:???<> え、paerseIntはとうぜんbad partsとして載ってるんだよね? <> Name_Not_Found<>sage<>2013/09/24(火) 00:51:24.63 ID:???<> forinとかwithみたいな嫌われた構文を使わなければ汚染なんて関係ないこと <> Name_Not_Found<>sage<>2013/09/24(火) 00:52:25.47 ID:???<> >>203
要するにvarじゃなくてletを使えって言ってるんだよ。
そうすれば上に持ってこなくて済むじゃん。 <> Name_Not_Found<>sage<>2013/09/24(火) 00:54:58.52 ID:???<> paerseIntはCSSの〜pxみたいなときのパースでしか使うことはない
今はinput要素には.valueの他に.valueAsNumberがあるのでそちらを使うべき
勿論n = +strもとてもいい <> Name_Not_Found<>sage<>2013/09/24(火) 00:55:46.16 ID:???<> >>211
その話は色んな奴がこの前したがダメなんだとよ <> Name_Not_Found<>sage<>2013/09/24(火) 01:05:42.68 ID:???<> Object.prototypeがライブラリ同士でバッティングしててもこれからは忍者のように隠れてわからなくなるってこと? <> Name_Not_Found<>sage<>2013/09/24(火) 01:06:49.51 ID:???<> javasriptは次から次へ似たようなAPI出てきてカオスすぎるわ <> Name_Not_Found<>sage<>2013/09/24(火) 01:07:11.89 ID:???<> letって今普通に使えるんですか?
MDN見たらまた不確定機能みたいに書かれてますが。
しかも
let で宣言された変数はそれを取り囲んでいるブロックの先頭へ引き上げられます。
ってletも巻き上げられるんじゃ? <> Name_Not_Found<>sage<>2013/09/24(火) 01:13:58.93 ID:???<> >>214
列挙されないってだけだよ
上書きを防止することもできるけど

>>216
それは旧仕様
具体的にはFirefoxが昔から導入してた
ES6の元になったJS1.なんちゃらではそう

実際のES6やChromeの実装では巻き上がらない <> Name_Not_Found<>sage<>2013/09/24(火) 01:17:07.82 ID:???<> だからMDNの情報は古いことがあるから鵜呑みにするなって前言ったろ。
とは言ってもES6に関してはESwikiは勿論、
ドラフトもところどころ、なんと1年も反映が遅れてる部分もあるから注意。 <> Name_Not_Found<>sage<>2013/09/24(火) 01:21:03.60 ID:???<> ES6にletがあっても今現在のコーディングが変わるわけでもないし
だから何としか言いようがないですね <> Name_Not_Found<>sage<>2013/09/24(火) 01:22:07.42 ID:???<> ES6に関してはこういう微妙なところも追っておかないと将来絶対アレ!?ってなるな
http://esdiscuss.org/topic/removal-of-noin-grammar-productions-and-for-loop-parsing <> Name_Not_Found<>sage<>2013/09/24(火) 01:28:40.87 ID:???<> >>209
はい。ひどいパーツで載ってました。

>>212
自分は、<div id="a1">199</div>
の199を$("#a1").html()で取得すると文字列になっているので、
文字列199を整数の199にするためにparseIntを使ってました。
.valueAsNumberってどのブラウザでも動くのでしょうか?
ieはどのバージョンから対応してますか? <> Name_Not_Found<>sage<>2013/09/24(火) 01:35:33.66 ID:???<> 多分10
http://msdn.microsoft.com/en-us/library/ie/hh772947(v=vs.85).aspx <> Name_Not_Found<>sage<>2013/09/24(火) 01:36:50.97 ID:???<> HTML5ベーシックの一部だから
HTML5対応をちょっとでも謳うんなら実装してないとおかしい <> Name_Not_Found<>sage<>2013/09/24(火) 01:44:28.86 ID:???<> >>222
ありがとうございます。
10ですか、私のwebサイトではie8まではサポートしてるので
とりあえず、paerseIntを使っときます。
parseFloatってgood partsに載ってないのは、紙面に限りがある
とかですかね?  <> Name_Not_Found<>sage<>2013/09/24(火) 01:46:58.48 ID:???<> クロックフォードスタイルがletによって変わるかは疑問がありますね
宣言しなければ自動的にローカル変数になる言語になったならともかく
宣言が必要ならば、ブロックの最初でするのがベストなのでは?
最初に宣言しておけば、それ以降は宣言したかどうかを気にする必要がないので。
varでもそうですが、多重宣言にならないように気を付けるのは面倒なものです <> Name_Not_Found<>sage<>2013/09/24(火) 01:55:47.07 ID:???<> letの多重宣言はコンパイルタイムエラーだから発見が容易だし
varの多重宣言はと言うのはズレてる、スタイルに関連する問題ではない <> Name_Not_Found<>sage<>2013/09/24(火) 02:23:28.32 ID:???<> ズレてるのは自分では・・
言葉の意味は分かりますが文章全体としては何を言いいたいのか全く分かりませんよ <> Name_Not_Found<>sage<>2013/09/24(火) 02:25:18.02 ID:???<> >>225
それは歴史が証明している。

他の言語でブロックの最初で定義する人は
もうほとんどいない。 <> Name_Not_Found<>sage<>2013/09/24(火) 02:28:32.28 ID:???<> 何が言いたいのか分からんのはそっちだよ
でも最大限推測してあげて色んなケースを考えてみたけど
varの重複を気をつける必要があるシチュが思いつかない <> Name_Not_Found<>sage<>2013/09/24(火) 02:45:53.22 ID:???<> 変数名の重複を気にしなければならないほど巨大な関数をつくろうとしているのが問題なのでは。
普通に書いてればそんなこと起こらないでしょ。
そもそも似たような名前の変数を同じ関数内で宣言しなければならないという状況自体、
同じような処理を何度もやろうとしてるとかしか思いつかないんだけど。 <> Name_Not_Found<>sage<>2013/09/24(火) 02:47:18.95 ID:???<> 変数名の重複ではなく宣言の重複の話です。 <> Name_Not_Found<>sage<>2013/09/24(火) 02:56:13.09 ID:???<> 宣言を重複させる例

function foo() {
  for(var i = 0; i < 10; i++) {
    ・・・
  }
  for(var i = 0; i < 10; i++) {
    ・・・
  }
}

これよりも、こう書くがいいでしょう?

function foo() {
  var i;
  for(i = 0; i < 10; i++) {
    ・・・
  }
  for(i = 0; i < 10; i++) {
    ・・・
  }
}

理由はvarを上にまとめたほうがいいという言ってる人が説明してね。 <> Name_Not_Found<>sage<>2013/09/24(火) 03:08:42.77 ID:???<> それこそletを使えば良いじゃん
なぜわざわざvarで重複させたり、
iが必要ないforの外でまでiを参照できるようにしとく必要があるの? <> Name_Not_Found<>sage<>2013/09/24(火) 03:14:22.82 ID:???<> どっちがいいかという話でletは関係ないお <> Name_Not_Found<>sage<>2013/09/24(火) 04:13:04.40 ID:???<> letのサポートSafari×、IE10以上って結構ザックリいくんだな <> Name_Not_Found<>sage<>2013/09/24(火) 04:21:03.29 ID:???<> そういう時に使うのがES6からES5に変換してくれる
コンパイラだよ。
https://github.com/google/traceur-compiler <> Name_Not_Found<>sage<>2013/09/24(火) 04:25:37.12 ID:???<> デモもあったけどURLが長いんで、
traceur-compiler online で検索してくれ

右上のoptionsに全部チェック入れると
letもアロー関数も対応してるのがわかる。 <> Name_Not_Found<>sage<>2013/09/24(火) 04:29:55.78 ID:???<> あ、googleで提示されたURLが長いだけだったw
ここから試せる。
http://traceur-compiler.googlecode.com/git/demo/repl.html <> Name_Not_Found<>sage<>2013/09/24(火) 04:57:26.03 ID:???<> >>193
よく見たらコンステレーションって人、escodegenの作者なんですね <> Name_Not_Found<>sage<>2013/09/24(火) 05:07:57.28 ID:???<> >>232
これは非常に気持ち悪く感じる…感性の問題かもしれんけど <> Name_Not_Found<>sage<>2013/09/24(火) 06:42:06.81 ID:???<> 他の言語では大抵重複宣言はエラーになるから、
意識する様に習慣付いてるという理由で JavaScript でも
それに従う、という程度かな。 <> Name_Not_Found<>sage<>2013/09/24(火) 09:07:20.86 ID:???<> 他の言語のやり方に従うというであれば、
使う所で宣言する習慣にしたがえよw <> Name_Not_Found<>sage<>2013/09/24(火) 09:51:44.35 ID:???<> sには10進数の文字列が入っていてほしいんですが、sにはいろんな型が入っているかもしれません
parseInt(s, 10)でint型に変換してint型で利用したいんですが
いい方法教えてください

parseInt("0x0a", 10)と parseInt(0x0a, 10) は 0 と 10 になるのでNG。元が16進数なので省きたい
parseInt("true", 10) やparseInt(true, 10) は NaN になるから省けるのでOK <> Name_Not_Found<>sage<>2013/09/24(火) 10:58:15.06 ID:???<> +'0x0a' //10 <> Name_Not_Found<>sage<>2013/09/24(火) 11:09:51.12 ID:???<> 16進数を10進数に直したいのではないんです
とにかく第一引数が10進数の整数・文字列じゃないときは全部NGにしたいんですよ <> Name_Not_Found<>sage<>2013/09/24(火) 11:15:29.89 ID:???<> if(typeof s == "symbol" || !(""+s).match(/^\d+$/)) throw "10進数値だけよ"; <> Name_Not_Found<>sage<>2013/09/24(火) 11:34:13.72 ID:???<> >>246

0x0a // 10
"0110" // "0110"
0110 // 72
10.0 // 10 <> Name_Not_Found<>sage<>2013/09/24(火) 11:56:27.87 ID:???<> /\d*\.?\d*/ とか?
1.0e6みたいな表現にも対応するのは面倒だな。 <> Name_Not_Found<>sage<>2013/09/24(火) 12:00:54.56 ID:???<> if(!Number.isFinite(+s)) throw "じゃあの" <> Name_Not_Found<>sage<>2013/09/24(火) 12:22:29.14 ID:???<> これでFA
if (parseFloat(s,10) != +s) throw "んじゃの" <> Name_Not_Found<>sage<>2013/09/24(火) 12:41:43.36 ID:???<> http://jsperf.com/call-apply-segu

applyよりcallがパフォーマンス高いのは何故ですか?
差がありすぎでは? <> Name_Not_Found<>sage<>2013/09/24(火) 12:58:10.31 ID:???<> >>251
callとapplyの実行時間の差より配列作る時間の方が長かったりしない?
別に同じ意味のプログラムである必要はないんだから、callも配列作って渡してみれば? <> Name_Not_Found<>sage<>2013/09/24(火) 13:05:00.06 ID:???<> なるほど
確かに配列の作成はコストが高そうです
ありがとうございました <> Name_Not_Found<>sage<>2013/09/24(火) 13:12:27.43 ID:???<> http://jsperf.com/apply-vs-call3

条件を揃えて比較しましたがやはりcallの方が圧倒的に速いですね <> Name_Not_Found<>sage<>2013/09/24(火) 13:30:50.67 ID:???<> arrayが参照されないから最適化されちゃってるんじゃないの?
両方とも配列渡しちゃえよ <> Name_Not_Found<>sage<>2013/09/24(火) 13:33:38.72 ID:???<> IEはapplyの方が早いし、Chromeはそんな差がないじゃん <> Name_Not_Found<>sage<>2013/09/24(火) 14:15:59.86 ID:???<> 配列を渡したらそれはそれで両者の条件が変わりますよ
というかそこが本質でないのは明らかです
この大きな速度差はどこから来ているのか?という問題が主題です <> Name_Not_Found<>sage<>2013/09/24(火) 14:21:58.98 ID:???<> a = [1,2,3..略..99999]
って1から99999まで入ってる配列があります
これをメモリデバッガなどで値を書き換えるってことは加納ですか? <> Name_Not_Found<>sage<>2013/09/24(火) 14:49:53.80 ID:???<> >>242
何言ってんだこいつは <> Name_Not_Found<>sage<>2013/09/24(火) 15:15:17.04 ID:???<> >>257
大きな速度差はfirefoxだけだから、たぶん配列に関する最適化の差だな <> Name_Not_Found<>sage<>2013/09/24(火) 15:21:44.07 ID:???<> 配列か否かだけでこんなに差が出るわけがないと思いますが。
関数オブジェクト自体を作り直してるんじゃないかという勢いです
bindは関数オブジェクトを作ると聞いた記憶があるので
内部でbindしてるのかもしれませんね <> Name_Not_Found<>sage<>2013/09/24(火) 15:23:19.50 ID:???<> 遅いapplyを使ってるapply.pushより遅いconcatって・・プークスクス <> Name_Not_Found<>sage<>2013/09/24(火) 15:25:28.83 ID:???<> >>261
大きな差があるのはfirefoxだけなのは確認した?
firefoxのcallのほうは配列に関する処理をまったくやってない可能性がある
bindは全く関係無いよ <> Name_Not_Found<>sage<>2013/09/24(火) 15:30:01.76 ID:???<> 二倍近い差は充分に大きな差ですが・・
bindは全く関係ないとか、知らないのに何で言っちゃうんですか?プークスクス <> Name_Not_Found<>sage<>2013/09/24(火) 15:43:13.85 ID:???<> >>262
本来用途の違うものを比較してプークスクスって・・プークスクス <> Name_Not_Found<>sage<>2013/09/24(火) 15:46:54.20 ID:???<> >>261
applyが内部でbind使うの?callは使わないの? <> Name_Not_Found<>sage<>2013/09/24(火) 15:55:08.30 ID:???<> firefoxで大差、chromeで2倍弱、IEで結果がひっくり返るってことは
たぶんJSの最適化関係なんだろうなw
firefoxのこれはたぶん無茶なインチキくさい最適化してるw <> Name_Not_Found<>sage<>2013/09/24(火) 16:06:01.43 ID:???<> http://stackoverflow.com/questions/15455009/js-call-apply-vs-bind

bindが内部でapplyを使っているようですね
bindの遅さもapplyの遅さに起因すると <> Name_Not_Found<>sage<>2013/09/24(火) 16:12:26.19 ID:???<> 引数が動的に与えられるとキャッシュが効かないとかかなぁ <> Name_Not_Found<>sage<>2013/09/24(火) 16:16:49.36 ID:???<> IEではapplyの方が早いのを全く無視して話をすすめるのか <> Name_Not_Found<>sage<>2013/09/24(火) 16:17:45.51 ID:???<> じゃあapplyの中でcall呼んでるんじゃね? <> Name_Not_Found<>sage<>2013/09/24(火) 16:20:22.62 ID:???<> http://jsperf.com/call-apply-segu

これ見るとIEでもcallの方が速いけど?
普通に考えてcallの方が速くなる方が自然だし、それが逆になるのは実装がおかしい
そして不自然な実装に最適化することは長期的に考えて愚か <> Name_Not_Found<>sage<>2013/09/24(火) 16:26:24.34 ID:???<> >>268
> bindが内部でapplyを使っているようですね

どこにそんな記述がある?
そもそも bind は function オブジェクトを返すもので、
bind 呼び出し時は関数は実行されないから、apply の実行速度と
全く関係ないと思うけど。 <> Name_Not_Found<>sage<>2013/09/24(火) 16:30:41.99 ID:???<> apply - 関数呼び出し
bind - applyのthisの参照をクロージャで維持した関数を返す

bindの実装でのapplyの使用のされ方ってこんな感じかな? <> Name_Not_Found<>sage<>2013/09/24(火) 16:33:25.30 ID:???<> >>272
そっちだとapply側だけ配列確保してるからIEもcallが早くて他のブラウザと同じ傾向になる
http://jsperf.com/call-apply-segu

こっちは両方とも配列確保してるけど、
firefoxやchromeはcall側の配列に関する処理を省いちゃうので上のと同じ傾向になる
素直はIEはまじめに両方とも配列確保しちゃうので差がなくなっちゃった(実際には差が反転)のではないかな
http://jsperf.com/call-apply-segu <> Name_Not_Found<>sage<>2013/09/24(火) 16:35:25.20 ID:???<> ああ、ごめんURLまちがった下はこっち
http://jsperf.com/apply-vs-call3 <> Name_Not_Found<>sage<>2013/09/24(火) 16:47:49.96 ID:???<> 普通に考えるとapplyの方が素に近い処理じゃないか?
可変長の引数の取り扱いより、配列1個受け取ったほうが処理は楽だろ? <> Name_Not_Found<>sage<>2013/09/24(火) 17:08:32.56 ID:???<> なんでやねんw
インターフェイスが確定されないんだからパフォーマンス落ちるのが当然 <> Name_Not_Found<>sage<>2013/09/24(火) 17:11:18.10 ID:???<> applyよりもcallが速い理由を考えるんじゃなくて
applyは遅くない!と何故か主張しだすアホはなんなんだw <> Name_Not_Found<>sage<>2013/09/24(火) 17:18:45.28 ID:???<> 呼び出しより配列確保の影響の方が大きいというのは
わりと面白い推測だと思うけど
>>275でIEだけ傾向が変わってるし <> Name_Not_Found<>sage<>2013/09/24(火) 17:20:21.54 ID:???<> >>279
あんたは>>251なの? <> Name_Not_Found<>sage<>2013/09/24(火) 17:24:52.30 ID:???<> VB2012PROのアプリケーション作成でjsを用いてるのですが、なぜか画像が表示されません(http://i.imgur.com/wbCbetF.jpg)

<img src="C:\Users\User\Documents\Visual Studio 2012\Projects\App2\App2\images\BOfcow-CAAE48Nz.jpg large.jpg" />
この文のどこに問題があるのでしょうか? <> Name_Not_Found<>sage<>2013/09/24(火) 17:36:03.07 ID:???<> \  \
\ \
 \
 \
 \
 \ <> Name_Not_Found<>sage<>2013/09/24(火) 18:05:08.37 ID:???<> >>282
画像はあきらめてCanvasで自己解決しました <> Name_Not_Found<>sage<>2013/09/24(火) 22:59:28.14 ID:???<> チャットみたいに1行文字列を要素の下に追加していく場合
obj.innerHTML += "<div>aaaaaa</div>";
ってinnerHTMLを使うのが一番良いですか? <> Name_Not_Found<>sage<>2013/09/24(火) 23:13:32.92 ID:???<> いいえ <> Name_Not_Found<>sage<>2013/09/25(水) 00:12:26.65 ID:???<> どうやるのが一番いいですか? <> Name_Not_Found<>sage<>2013/09/25(水) 09:00:22.22 ID:???<> appendでしょうね <> Name_Not_Found<>sage<>2013/09/25(水) 11:48:20.07 ID:???<> 最適化のためにローカル変数に代入しまくるとか
オブジェクトのループ書くためにObject.keys書きまくるとか面倒くさくなってきました
coffee scriptか?とも思うけどcoffee scriptにした後にcoffee scriptが廃れたら・・とか不安です
どうしたらいいですか <> Name_Not_Found<>sage<>2013/09/25(水) 11:49:55.89 ID:???<> ループはsublimeのスニペットで何とかなりますかね〜 <> Name_Not_Found<>sage<>2013/09/25(水) 12:43:54.62 ID:???<> オブジェクトのキーの列挙に最適化なんて要らん
ローコル変数のキャッシュも同じく
そういう細かい所はエンジンの責任

あとはパレードの法則に従えば限られてくる
だがその前にアルゴリズムを疑え
最適化気にする奴が書くコードは質が悪い
最適化っていうのは良いコードを書いて最後にちょこちょこっとするものだ <> Name_Not_Found<>sage<>2013/09/25(水) 12:48:37.35 ID:???<> オブジェクトのループと言う時点で結構怪しい。 <> Name_Not_Found<>sage<>2013/09/25(水) 13:00:49.04 ID:???<> if (hoge) a =1 else b=1;
だとエラーになり
if (hoge) a =1;else b=1;
だとエラーにならないのは何故ですか? <> Name_Not_Found<>sage<>2013/09/25(水) 13:02:23.86 ID:???<> パフォーマンスを気にしないで書けるほどJavaScriptの最適化が進んでいるとは思いませんが。
むろん理想的にはそうです。 <> Name_Not_Found<>sage<>2013/09/25(水) 13:06:03.01 ID:???<> >>4 にあるべき各種仕様■各種仕様 ( http://fiddle.jshell.net/vSqKr/33/show/#Link も参照 )
◆ Standard ECMA-262
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ (ECMAScript 3 和訳)
http://es5.github.io/ (ECMAScript 5.1 有志HTML版)
http://people.mozilla.org/~jorendorff/es6-draft.html (ECMAScript 6 有志HTML版)
http://kangax.github.io/es5-compat-table/ (ECMAScript 5 compatibility table)
http://kangax.github.io/es5-compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html(Web Storage 和訳)
◆ Document Object Model (DOM) / CSS Object Model (CSSOM)
http://www.hcn.zaq.ne.jp/___/WEB/DOM4-ja.html (DOM Standard (DOM4) 和訳)
http://www.w3.org/TR/DOM-Level-3-Events/ (DOM3 Events)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html (CSSOM 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-view-ja.html (CSSOM View Module 和訳)
◆ その他のWeb関連仕様
http://domparsing.spec.whatwg.org/ (DOM Parsing and Serialization - innerHTML等)
http://www.hcn.zaq.ne.jp/___/WEB/XHR-ja.html (XMLHttpRequest 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/File_API-ja.html (File API 和訳)
http://notifications.spec.whatwg.org/ (Notifications API)
http://www.whatwg.org/specs/ (WHATWGの仕様一覧)
◆ MDN (Netscape/Mozilla)
https://developer.mozilla.org/ja/docs
◆ JavaScript Garden (ja)
http://bonsaiden.github.com/JavaScript-Garden/ja/
◆ JSON (JavaScript Object Notation)
http://www.json.org/json-ja.html
◆ MSDN Library
http://msdn.microsoft.com/ja-jp/library/yek4tbz0.aspx (JavaScript)
http://msdn.microsoft.com/ja-jp/library/cc427807.aspx (JScript)
http://msdn.microsoft.com/ja-jp/library/cc409712.aspx (DHTML) <> Name_Not_Found<>sage<>2013/09/25(水) 13:08:35.98 ID:???<> >>293
ここを熟読するべし。熟読しても分からないならその時は説明してもいいよ。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/7_Lexical_Conventions.html#section-7.9 <> Name_Not_Found<>sage<>2013/09/25(水) 13:15:59.68 ID:???<> ありがとうございます
早速読んでみました
ifステートメントのconsequentがブロックステートメントでない時は
ステートメントの終わりが分からないということだと思います
しかしelseが出てきたならその時点でステートメントの終わりなのは明らかです
現に他の言語では;を必要としないものも多くあります
何故JSでは;を必要とするのでしょうか? <> Name_Not_Found<>sage<>2013/09/25(水) 13:24:27.88 ID:???<> >>294
君が知らないだけだよ <> Name_Not_Found<>sage<>2013/09/25(水) 13:27:46.42 ID:???<> 特殊なケースを覗いてわざわざ悪い書き方をしてないのに遅いんならエンジンの責任。
逆に最適化ノウハウはエンジンごとに違うから多用するものではない。
結局、「「素直」」に書くってのが一番大事。素直にね。
苦しんで書いたコードとかメンテの面でも良くない。 <> Name_Not_Found<>sage<>2013/09/25(水) 13:34:18.43 ID:???<> >>294
パフォーマンスを全く気にしないで良いなんて言ってないがな
パレートの法則でggr <> Name_Not_Found<>sage<>2013/09/25(水) 13:50:26.53 ID:???<> >>297
JavaScriptではステートメントの最後に;を付けなければいけない仕様だから。
これがいやならCoffeeScriptでも使うか、仕様変更を提案してください。 <> Name_Not_Found<>sage<>2013/09/25(水) 14:19:16.25 ID:???<> パレートの法則なんてもちろん知ってますが。
2の部分にはチューンが求められるでしょう
その部分を楽に書きたいんですが <> Name_Not_Found<>sage<>2013/09/25(水) 14:20:21.70 ID:???<> 質問に対して奇妙な前提を持ち出して「それは違う」とか言い出す人は何なのでしょうか <> Name_Not_Found<>sage<>2013/09/25(水) 14:33:47.06 ID:???<> 一つの関数の中に同じ変数名が複数回出てきた時に
自動的にローカル変数に置き換えるような
そんなソースコードオプチマイザがあればいいのではと思うのですが
そういうのありませんか? <> Name_Not_Found<>sage<>2013/09/25(水) 14:43:03.67 ID:???<> ぶつからないように名前付けに自分ルール作る <> Name_Not_Found<>sage<>2013/09/25(水) 14:50:44.44 ID:???<> インプットに文字入力するとヒットしたキーワードが一瞬でセレクトボックスみたいなのに表示されるやつあるじゃないですか
あれってどういう仕組みなんですか? <> Name_Not_Found<>sage<>2013/09/25(水) 14:53:16.37 ID:???<> >>303
ここは質問に対してはある程度制限を設けてる
おまえは無視してるみたいだけど

回答に対しては特に制限を設けてない
任意の前提を付け加えた回答を書き込むのは自由 <> Name_Not_Found<>sage<>2013/09/25(水) 16:12:25.15 ID:???<> >>289
「面倒くさくなってきました」
挙句に「不安です、どうしたらいいですか」

典型的なゆとり、低脳。 <> Name_Not_Found<>sage<>2013/09/25(水) 16:13:27.86 ID:???<> >>197
この件ですが、コメントを文法ツリーに入れた上で、それをunparseするunparserを書いたらいいのでは?
と思い、escodegenクローンのようなものを作り始めておおかた形になってきたのですが
その結果、文法ツリーは緻密でコメントを埋め込められるような代物じゃないということが分かりました
だからescodegenは分けて出力してたのですね・・
どうすればいいですか? <> Name_Not_Found<>sage<>2013/09/25(水) 16:17:28.57 ID:???<> 2の部分にObject.keysが必要なことが驚き
十中八九ボトルネックになるのはDOM操作のはずなんだが
設計を疑った方がいいのでは?

ゲームなんかでロジックの最適化が重要な場合でも
キーの列挙が出てくるケースが思いつかないし
適当に言ってるだけでは?

それにちゃんと構造化してれば沢山書き換えることにならないはずだよ
取り敢えずどんなことがしたいのか、ソースコードを教えて欲しい <> Name_Not_Found<>sage<>2013/09/25(水) 16:40:34.22 ID:???<> アンドロイドに特化したcanvasのライブラリおしえて <> Name_Not_Found<>sage<>2013/09/25(水) 17:15:44.85 ID:???<> Androidにブラウザはたくさんあります <> Name_Not_Found<>sage<>2013/09/25(水) 17:39:16.71 ID:???<> そう、だから特化したやつがほしいんだよ <> Name_Not_Found<>sage<>2013/09/25(水) 17:51:27.04 ID:???<> ん?なんだって?もう一度お願い。 <> Name_Not_Found<>sage<>2013/09/25(水) 19:46:23.03 ID:???<> Object.keysはfor inループを避けるために使うのですよ
そしてDOMアクセスの最適化も当然のことです
高速化が必要な部分では可能な限りチューンする
当たり前のことです <> Name_Not_Found<>sage<>2013/09/25(水) 19:55:22.63 ID:???<> http://jsperf.com/object-keys-vs-for-in-for-values/2

これをご覧ください
これが事実です <> Name_Not_Found<>sage<>2013/09/25(水) 20:06:43.24 ID:???<> forinループやObject.keysがそんなに必要になる事自体おかしい。
ソース見してみ。 <> Name_Not_Found<>sage<>2013/09/25(水) 20:14:16.95 ID:???<> 頻繁にループで舐めるデータ構造なら配列を使ったほうがいいんじゃないか? <> Name_Not_Found<>sage<>2013/09/25(水) 20:17:18.16 ID:???<> つーーれーたーつーれーたーー♫ <> Name_Not_Found<>sage<>2013/09/25(水) 20:24:12.42 ID:???<> オブジェクトのループがめずらしいと言っちゃう人がどんなソースを書いているのか興味ありますね
オブジェクトのループのないソースコードなんてほとんどないのでは? <> Name_Not_Found<>sage<>2013/09/25(水) 20:46:25.46 ID:???<> ループの順序を逆順にすることは、 プログラミング言語では一般的な最適化手法であるが、
一般的にはよく理解されていない。
JavaScript においても、 ループの順番をひっくり返すことによって行う処理を減らすことができるため、
ループのパフォーマンスをわずかながら向上させる。
という「ハイパフォーマンスJavaScript」の記述を信じていたのですが、
ふと思い立って試してみたところ、
http://jsperf.com/for-loop-hikaku
驚くべきことに逆順ループの方が遅かったです
しかも、洒落にならないレベルで。
これは一体どういうことなのでしょうか? <> Name_Not_Found<>sage<>2013/09/25(水) 20:47:13.19 ID:???<> PHPのhttp_parse_cookie()のように
Set-Cookieの値をオブジェクトにする機能またはライブラリはありませんか?
あれば教えてください <> Name_Not_Found<>sage<>2013/09/25(水) 20:50:34.21 ID:???<> 「一般的にはよく理解されていない」ことをすると
最適化の進歩の網から抜け落ちてしまうということでしょうか・・ <> Name_Not_Found<>sage<>2013/09/25(水) 20:54:39.81 ID:???<> 糞ワラタt <> Name_Not_Found<>sage<>2013/09/25(水) 21:03:12.27 ID:???<> testとupdateを一度にするというトリッキーさが気にはなっていたのですが。
トリッキーな最適化は環境の進歩と共に非最適化になってしまいがちなのでしょう
注意してくださいね <> Name_Not_Found<>sage<>2013/09/25(水) 21:25:04.33 ID:???<> テストを単一の条件でのみ試して結論付ける馬鹿って何なの? <> Name_Not_Found<>sage<>2013/09/25(水) 21:35:36.81 ID:???<> は???? <> Name_Not_Found<>sage<>2013/09/25(水) 21:38:12.47 ID:???<> こんなに短い文章なのにまじで何言ってるか分からん
誰か>>326が何言ってるのか訳して <> Name_Not_Found<>sage<>2013/09/25(水) 21:55:47.05 ID:???<> あごっち知らない奴はJavaScriptのもぐりかHTML5expartを見てないボンクラ <> Name_Not_Found<>sage<>2013/09/25(水) 22:34:55.19 ID:???<> >>329
知り合いの外国人数名に聞いたけど
誰も知らなかったよw <> Name_Not_Found<>sage<>2013/09/25(水) 23:03:17.62 ID:???<> とりあえず普通の日本語を書いてくれないとツッコミもできんw <> Name_Not_Found<>sage<>2013/09/25(水) 23:11:31.92 ID:???<> 一般オブジェクトのループなんてどこで使うんだ?
JSONを列挙するときや
置換用のテーブルオブジェクトのキーを列挙するときくらいしか無くないか? <> Name_Not_Found<>sage<>2013/09/25(水) 23:27:00.94 ID:???<> どんなプログラム書いてんだよww <> Name_Not_Found<>sage<>2013/09/25(水) 23:35:13.24 ID:???<> >>333
お前は>>315-316なの? <> Name_Not_Found<>sage<>2013/09/25(水) 23:51:44.25 ID:???<> 質問に対して正面から答えられないやつほど「そんなことしないだろ」とか言い出すよね
お前がするかしないか知らねーよw
分からないなら黙っとけよ <> Name_Not_Found<>sage<>2013/09/25(水) 23:55:06.59 ID:???<> >>335
お前も>>315-316なの? <> Name_Not_Found<>sage<>2013/09/25(水) 23:56:29.92 ID:???<> どんな回答をするのも自由 <> Name_Not_Found<>sage<>2013/09/25(水) 23:58:17.83 ID:???<> 自分が気に食わない回答を罵倒するやつはここに書き込むな <> Name_Not_Found<>sage<>2013/09/26(木) 00:01:15.26 ID:???<> >>335
>>1を百回読んで理解できたら書き込め <> Name_Not_Found<>sage<>2013/09/26(木) 00:02:14.35 ID:???<> >>335な〜に言ってんだこいつ
皆真正面から答えたがそれでも質問者が納得しないから
解決に向けて折り合いを付けてる段階だろうが
さらなる意見を貰いたいんならこちらの要求に答えてソースコード出すなりしろよ <> Name_Not_Found<>sage<>2013/09/26(木) 00:02:43.21 ID:???<> 「回答」じゃないんだから問題ないなw <> Name_Not_Found<>sage<>2013/09/26(木) 00:05:35.63 ID:???<> 一般的問題なのにソースコード出せとか意味不明
問題にだけ集中しろ
分からないなら黙っとけ
お前の意見は何の役にも立たないんだから <> Name_Not_Found<><>2013/09/26(木) 00:07:09.93 ID:tuUPKup3<> もうお前らID出して書き込め <> Name_Not_Found<>sage<>2013/09/26(木) 00:09:26.84 ID:???<> >>342
ここは分からない人が黙らなければいけないなんてルールはありませんよ
ルールに従わない人は黙っててくれませんかね? <> Name_Not_Found<><>2013/09/26(木) 00:10:19.87 ID:rgFe7zwL<> >>342
何を答えて欲しいんだよw <> Name_Not_Found<>sage<>2013/09/26(木) 00:11:01.26 ID:???<> 上げていくか <> Name_Not_Found<><>2013/09/26(木) 00:11:55.46 ID:FKDqe9WW<> あれ・・・ <> Name_Not_Found<><>2013/09/26(木) 00:13:15.80 ID:FKDqe9WW<> とりあえずオブジェクトをループで列挙して処理する目的を知りたいな
これは質問です <> Name_Not_Found<>sage<>2013/09/26(木) 00:16:34.96 ID:???<> >>345
これ。
「面倒くさい」とか「不安」という主観的理由が発端で、
それについて「どうしたらいいですか」と。

289 :Name_Not_Found:2013/09/25(水) 11:48:20.07 ID:???
  最適化のためにローカル変数に代入しまくるとか
  オブジェクトのループ書くためにObject.keys書きまくるとか面倒くさくなってきました
  coffee scriptか?とも思うけどcoffee scriptにした後にcoffee scriptが廃れたら・・とか不安です
  どうしたらいいですか <> Name_Not_Found<>sage<>2013/09/26(木) 00:25:22.13 ID:???<> >>348
一意のlDをふったオブジェクトの集合を扱っているので
IDをキーにしてテーブル的に処理しています <> Name_Not_Found<>sage<>2013/09/26(木) 00:27:16.44 ID:???<> オブジェクトのループなんてしないよ派は
たとえばkey-valueストアを配列にしろとでもいうのでしょうか?
配列に格納できないデータをオブジェクトに入れるのはごく自然なことだと思いますが。 <> Name_Not_Found<>sage<>2013/09/26(木) 00:42:21.65 ID:???<> うん。普通は
index-key-valueにする <> Name_Not_Found<><>2013/09/26(木) 00:44:25.22 ID:rgFe7zwL<> どうしたいのか言えよ
for-in&getOwnは良くてkeysが面倒だという話じゃなくて
もうコードを書くのがだるいな、愚痴聞いて同情してくださいよーってことだろ <> Name_Not_Found<>sage<>2013/09/26(木) 00:49:26.86 ID:???<> >>352
それは何ですか?
>>353
愚痴ではありません
最適化の自動化が可能ではないか?
だとしたらそれはどのようなものか?という問題です
パーサ&アンパーサをいじったり作ったりしているのは、それを踏まえてのことです <> Name_Not_Found<>sage<>2013/09/26(木) 00:56:44.02 ID:???<> 何の話をしているかしらんけど、underscoreかlodash使えば
オブジェクトのキーとかの問題は全て解決する。 <> Name_Not_Found<>sage<>2013/09/26(木) 00:59:58.41 ID:???<> Object.keys使うにしてもfor-in-hasOwnProperty使うにしても
各所にそのコードが散らばるとかはないなあ
走査用の関数作って各所ではそれを使うだけだ <> Name_Not_Found<>sage<>2013/09/26(木) 01:00:33.40 ID:???<> だから、_ つかえって。 <> Name_Not_Found<><>2013/09/26(木) 01:20:00.91 ID:tuUPKup3<> hasOwnProperty を使わなきゃいいだけ
しっかり管理されてるなら for in で構わんよ <> Name_Not_Found<>sage<>2013/09/26(木) 01:27:13.02 ID:???<> だから _ 使えって言ってるだろ。 <> Name_Not_Found<>sage<>2013/09/26(木) 01:33:56.57 ID:???<> var a='<a href="〜" id="PC">nm<\/a>';
から、文字列nmだけ抜き出してきて、
var bに格納するやり方を教えて下さい。
また、実際には、変数aは$("#aa").html()で
取得した値なのですが、取得すると<\/a>でなく
</a>となるのは、javascriptの文法上まずくないでしょうか?
対処策があれば教えて下さい。
<div id="aa"><a href="〜" id="PC">nm</a></div> <> Name_Not_Found<>sage<>2013/09/26(木) 01:38:33.28 ID:???<> $("#aa").html()なんかいらんだろ?

var b = $("#aa").text(); で一発で取得できる。

divの中に他に文字列があったとしても

var b = $("#aa a").text(); これでよい <> Name_Not_Found<>sage<>2013/09/26(木) 01:41:49.45 ID:???<> >>360
var a='<a href="〜" id="PC">nm<\/a>';
var r = new RegExp(/>([^<]*)/);
var m, b;
if (m = r.exec(a)) b = m[1];
alert(b); <> Name_Not_Found<>???<>2013/09/26(木) 05:42:39.53 ID:???<> / <> Name_Not_Found<>sage<>2013/09/26(木) 10:12:28.97 ID:???<> jqueryのajaxでasyncをfalseにすると
直前のcss変更が聞かないんですがなぜですか?
asyncがtrueだと変更できるんですが


$(obj).css(〜);
$.ajax(){

}.done(〜)
.fail(〜); <> Name_Not_Found<>sage<>2013/09/26(木) 10:57:19.30 ID:???<> ブラウザが固まるから <> Name_Not_Found<>sage<>2013/09/26(木) 11:05:55.82 ID:???<> 同期するということは全てのcss適応が向こうかされるってことですか? <> Name_Not_Found<>sage<>2013/09/26(木) 12:01:39.72 ID:???<> 固まってる間反映されないだけ <> Name_Not_Found<>sage<>2013/09/26(木) 12:47:17.43 ID:???<> underscoreって便利関数集ですか〜
なかなかよさそうですね
string系のユーティリティーも欲しいところです <> Name_Not_Found<>sage<>2013/09/26(木) 13:43:37.65 ID:???<> http://jsperf.com/for-vs-for-in10
hasOwnPropertyチェックを外しても、for inの方が1〜2割遅いですね
少し面倒くさい記述するだけで性能あがるなら、自分は性能を上げる方を取ります <> Name_Not_Found<>sage<>2013/09/26(木) 13:50:53.25 ID:???<> 多重ループになるとkeysとkeyとlenが大量になって間違えがちなので
ループするオブジェクト名をプレフィックスにして
hogeKeys,hogeKey,hogeLenとしたらいいと気付きました
ありがとうございました <> Name_Not_Found<>sage<>2013/09/26(木) 14:11:22.21 ID:???<> >>367
通信する前にcssを書いてるのに反映されないっておかしくないですか <> Name_Not_Found<>sage<>2013/09/26(木) 14:22:24.55 ID:???<> >>371
Aの仕事が終わったらBの仕事やれ。暇になったらCに反映しといて
って言ってるような状態 <> Name_Not_Found<>sage<>2013/09/26(木) 14:43:20.61 ID:???<> >>321
この件についてですが、
for ( var i=100-1;i>-1;i--);
とすると、当然ですが通常ループと変わらないパフォーマンスが出ました
この書き方だと
var i=array.length-1
と書けて一時変数lenが必要なくなるのでいいかもしれません <> Name_Not_Found<>sage<>2013/09/26(木) 14:58:05.30 ID:???<> >>371
そういう仕様だから <> Name_Not_Found<>sage<>2013/09/26(木) 15:09:28.94 ID:???<> http://jsperf.com/for-plus-vs-minus

一時変数を介さない分、わずかに逆順ループの方が速くなりました
必ずそうなるというわけではないので微妙ですが、平均的にはそうなるかも
逆順最適化は死せずということでしょうか(^O^) <> Name_Not_Found<>sage<>2013/09/26(木) 15:22:59.04 ID:???<> お次の方どうぞー <> Name_Not_Found<>sage<>2013/09/26(木) 16:36:08.74 ID:???<> >>369
http://jsperf.com/for-vs-for-in10/2 <> Name_Not_Found<>sage<>2013/09/26(木) 17:35:09.19 ID:???<> javascriptでwebページ全体を画像にするっていうのあるじゃないですか
あれはどういう仕組みなんでしょうか? <> Name_Not_Found<>sage<>2013/09/26(木) 20:37:03.83 ID:???<> |:::::::::::::::   
       ∧_∧:::::::::::: 
 __   (´・ω・`) :::::::: すみません、ここでうんこしていいですか?
◎ー)  /     \:::::::::
 |  | (⌒) (⌒二 )::::::::::::
 ~~~ /⌒ヽ( ̄、  ヽ___ 
   /    Lヽ \ノ___
   ゙ー―――(__)--- <> Name_Not_Found<>sage<>2013/09/26(木) 21:13:11.09 ID:???<> >>377
これはどういうことですか? <> Name_Not_Found<>sage<>2013/09/26(木) 21:15:32.68 ID:???<> ループ数が少ないとfor inの方が速い?
それともキーの名前によって変わる? <> Name_Not_Found<><>2013/09/26(木) 21:22:34.68 ID:S0oMH2UQ<> addEventListener()などでリスナーがセットされたオブジェクトに対して
あるリスナー(イベントハンドラ)がセットされているかどうか確認する方法はあるんでしょうか?
例えばhasEventListener()のようなメソッドを定義できないかと考えています

# 擬似コード
obj.addEventListener("click", handler1, false);
obj.addEventListener("click", handler2, false);
obj.hasEventListener("click", handler1); #=>true (or false)

しかしハンドラがどこに保持されてるかは見えないように思われます(直接アクセスできない?)
どうでしょうか <> Name_Not_Found<>sage<>2013/09/26(木) 21:23:11.24 ID:???<> http://jsperf.com/for-vs-for-in10/3

キー名の法則を変えずループを10→50にしたらforの方が速くなりました
ループが少ないとfor inの方が速いのか〜
悩ましい <> Name_Not_Found<>sage<>2013/09/26(木) 21:29:38.59 ID:???<> ページの下までスクロールされたら特定の処理がしたいんですが
ページの下にいる状態で横スクロールを動かすと処理が動いてしまいます
どう改善したらいいのかアドバイスください

obj.addEventListener('scroll', function(){
// ページ下までスクロールされているか判定
}, false); <> Name_Not_Found<>sage<>2013/09/26(木) 21:47:34.65 ID:???<> Object.keysにより配列オブジェクトを新規作成するコストが
for inループで余計にかかるコストをうわまる間は、for inの方が速いということでしょうね
それだけオブジェクトの新規作成は処理的に重いと・・ <> Name_Not_Found<>sage<>2013/09/26(木) 21:59:36.02 ID:???<> >>383
IEとfirefoxはfor inの方が早いよ
IEはfor inの圧勝 <> Name_Not_Found<>sage<>2013/09/26(木) 22:14:33.19 ID:???<> 本当ですね
そうなるとシンプルなfor inの方がいいな
結局何もしない方が良かったということに・・(´;ω;`) <> Name_Not_Found<>sage<>2013/09/26(木) 22:37:40.34 ID:???<> 縦スクロールだけイベントを発生させる方法ありませんか? <> Name_Not_Found<>sage<>2013/09/26(木) 23:04:28.31 ID:???<> う〜ん
ページ下部に移動したら処理を実行させるサンプルをいろいろ見て回ったけど
どれも横スクロールは考慮されてないものしか見つからない・・・
無理なのかな <> Name_Not_Found<>sage<>2013/09/26(木) 23:23:03.39 ID:???<> >>361
>>362
ありがとうございます。 <> Name_Not_Found<>sage<>2013/09/27(金) 00:13:51.62 ID:???<> グローバル変数のキャッシュの有効性を試していました

http://jsperf.com/global-vs-local33/2

グローバル変数のプロパティを二回以上使う場合にはキャッシュした方が良さそうです
しかし奇妙なことに、IEではcache2の方がcache1よりもいつもわずかに速いのです
処理が多い方が速くなる理由が皆目分かりません
何故でしょうか? <> Name_Not_Found<>sage<>2013/09/27(金) 09:43:37.04 ID:???<> ステップ数の多い関数の方がより少ない回数の呼び出しで最適化対象になるから <> Name_Not_Found<>sage<>2013/09/27(金) 10:18:26.64 ID:???<> ありがとうございました <> Name_Not_Found<><>2013/09/27(金) 10:27:52.28 ID:c6HtV5qr<> Aタグの上にマウスポインタを乗せた時、リンク先のURLがブラウザのステータス欄に表示されますが、
ステータス欄に表示するものとリンク先を別にするには、どのようにしたらよいでしょうか?

やりたい事は
<a href="http://example.com">テスト</a>
とあった場合、現ページからhttp://example.comにジャンプした件数をカウントしたいので

現在のページ→カウントするページ→http://example.com
と飛ばしたい感じです。 <> Name_Not_Found<>sage<>2013/09/27(金) 10:47:55.65 ID:???<> そんなことができてしまったらマズイ <> Name_Not_Found<>sage<>2013/09/27(金) 10:54:15.23 ID:???<> >>394
> ステータス欄に表示するものとリンク先を別にする
これができたらフィッシング詐欺し放題になってしまうのでセキュリティ上不可。
そもそも、ステータスバーに何かを表示するという事自体、
リンク先情報などが見えなくなるから最近のブラウザはできないようになってるはず。 <> Name_Not_Found<>sage<>2013/09/27(金) 11:07:47.35 ID:???<> どうして出来ないと思うのよ?
mousedownでリンクを変更したらいいよ
Google検索とかで当たり前に使われてるでしょ <> Name_Not_Found<>sage<>2013/09/27(金) 11:41:34.35 ID:???<> 毎日アクセス解析でニヤニヤしてるクソ野郎を一泡吹かせるためにさ
リファラを書き換えてキチガイナところからアクセスされてるようにみせたい
どうやって相手サーバに任意のリファラを送信できますか? <> Name_Not_Found<>sage<>2013/09/27(金) 11:43:12.33 ID:???<> HTTPリクエストを書き換える <> Name_Not_Found<>sage<>2013/09/27(金) 12:43:06.86 ID:???<> モーダルウインドウは、ウインドウ外クリックで消えるべきですか? <> Name_Not_Found<>sage<>2013/09/27(金) 15:59:06.79 ID:???<> array.uniq的なことがしたくなったのでアンスコを使おうかと思うのですが
やはりこういったユーティリティーライブラリではアンスコが代表的なのでしょうか? <> Name_Not_Found<>sage<>2013/09/27(金) 16:11:12.96 ID:???<> アンスコってなに? <> Name_Not_Found<>sage<>2013/09/27(金) 16:14:02.40 ID:???<> underscoreです <> Name_Not_Found<>sage<>2013/09/27(金) 16:41:43.39 ID:???<> >>389
現在のスクロール位置を調べて前と縦位置が変わってなければ無視
するようなハンドラをつければよくない? <> Name_Not_Found<>sage<>2013/09/27(金) 18:24:08.17 ID:???<> preventDefaultをする必要のあるclickイベントって
たとえばどういうケースですか? <> Name_Not_Found<>sage<>2013/09/27(金) 18:46:16.05 ID:???<> 規約に同意のチェックボックスがチェックしてたら次のページに移動したいとき <> Name_Not_Found<><>2013/09/27(金) 19:12:30.75 ID:vV9NbbQ0<> あほな質問ですが
変数名って取得できますか?
コンソールに出力するときに

var hoge = 1;

console.log('hoge',hoge);

と書くのが面倒、ってだけなのですが <> Name_Not_Found<>sage<>2013/09/27(金) 19:18:06.22 ID:???<> >>368の件ですが、
http://epeli.github.io/underscore.string/
文字列用のライブラリもありました <> Name_Not_Found<>sage<>2013/09/27(金) 19:55:23.80 ID:???<> jQueryで$("#foo")のように取得したオブジェクトは
内部でキャッシュされてるのかな
何度も呼び出すときは
var foo = $("#foo");
のようにしてfooを持ち回した方がいいんだろうか <> Name_Not_Found<>sage<>2013/09/27(金) 19:57:22.42 ID:???<> >>407
意図がいまいちわからない。
仮に、getVariableName(hoge)で変数名が取得できたとして(実際は不可能)、
console.log('hoge', hoge);
って書くのと、
console.log(getVariableName(hoge), hoge);
って書くので面倒くささが変わるとは思えない。

肝心の可否については、windowのプロパティを全て列挙して中身が一致するものを探索する、
とかすれば不可能ではないと思うけど、
不正確だし、少なくとも直接書く以上に簡単になるとは思えないね。 <> Name_Not_Found<>sage<>2013/09/27(金) 20:32:53.33 ID:???<> 現在のタイムスタンプをGMTで取得したいのですが、どのようにすればいいですか? <> Name_Not_Found<>sage<>2013/09/27(金) 21:04:00.50 ID:???<> >>407
windowオブジェクトの中にその変数名が入ってる <> Name_Not_Found<>sage<>2013/09/27(金) 21:05:08.69 ID:???<> >>409
されてないよ
だからキャッシュしたら速くなる <> Name_Not_Found<>sage<>2013/09/27(金) 21:13:11.20 ID:???<> >>410 >>407
ようするにこうしたいんでしょ。
function mylog(value) { console.log(getVariableName(value), value); }
値から変数名は無理だけど逆ならグローバル限定ということにすれば。
function mylog(name) { console.log(name, window[name]); } <> Name_Not_Found<>sage<>2013/09/27(金) 21:30:56.46 ID:???<> var a = 100;
ってやったらaはキャッシュされてるのですか? <> Name_Not_Found<>sage<>2013/09/27(金) 21:43:09.04 ID:???<> 100がaにキャッシュされてる <> 409<>sage<>2013/09/27(金) 21:52:11.86 ID:???<> >>413
ありがとう。よく考えたら、取得したノードは変更されるかもしれないし
キャッシュされたら困る局面もあるよね・・・ <> Name_Not_Found<>sage<>2013/09/27(金) 23:09:05.18 ID:???<> 「配列が指定個数以上あったら指定個数に制限する」みたいな関数は
underscoreにないのですか? <> Name_Not_Found<>sage<>2013/09/27(金) 23:11:34.22 ID:???<> firstで出来ました
失礼しました <> Name_Not_Found<>sage<>2013/09/27(金) 23:20:30.67 ID:???<> 配列のuniq
uArr = [...new Set(oArr)] <> Name_Not_Found<>sage<>2013/09/27(金) 23:25:31.80 ID:???<> http://jsperf.com/underscore-lodash/3

lodashというアンスコとほぼ同じ機能のライブラリがあるみたいですが、
これを見ると、なんとネイティブforEachより速いです
何故そんなことが可能なのでしょうか? <> Name_Not_Found<>sage<>2013/09/27(金) 23:28:13.65 ID:???<> 何でアンスコって略すの? <> Name_Not_Found<>sage<>2013/09/27(金) 23:30:55.90 ID:???<> アンスコっていうとアンインストールの略にしか思えん…
それに _ って直接書いたほうが打鍵数少ないし楽じゃないか? <> Name_Not_Found<>sage<>2013/09/27(金) 23:31:50.22 ID:???<> JavaScriptをJSと言ったりするようなものです <> Name_Not_Found<>sage<>2013/09/27(金) 23:38:12.93 ID:???<> lodashはindexがあるかどうかを確認してない
例えばネイティブで
[0,1,,,4,5].forEach
は4回しか呼ばれないがlodashは6回呼ばれる
ネイティブはin演算子で確認してる分だけオーバーヘッドがある <> Name_Not_Found<>sage<>2013/09/27(金) 23:39:38.12 ID:???<> ネイティブ関数って中身はJavaScriptなんですか? <> Name_Not_Found<>sage<>2013/09/27(金) 23:42:23.30 ID:???<> ネイティブ関数をほぼ直接呼べる特権JSで書かれてる
https://code.google.com/p/v8/source/browse/branches/bleeding_edge/src/array.js#1184
https://github.com/lodash/lodash/blob/master/lodash.js#L3390 <> Name_Not_Found<>sage<>2013/09/27(金) 23:44:00.31 ID:???<> 空きのある配列をforeachすることなんてあまり考えにくいから
lodashのやり方の方がいいですね
ありがとうございました <> Name_Not_Found<>sage<>2013/09/27(金) 23:47:48.54 ID:???<> 特権JSってなんぞ
じゃあそれ使ったら超速いコードが書けるんですか??すごくないですか <> Name_Not_Found<>sage<>2013/09/27(金) 23:49:02.67 ID:???<> 裏JavaScript・・!? <> Name_Not_Found<>sage<>2013/09/27(金) 23:49:19.35 ID:???<> どちらがいいというか仕様の問題。
そもそも速度が必要な操作では関数コールのforEachはNGだし、
今も昔も配列はforで回すに限る。
標準の関数使える環境でわざわざライブラリのを使うのは変態だと思うし。 <> Name_Not_Found<>sage<>2013/09/27(金) 23:58:15.70 ID:???<> >>429,430
V8やNodeで「--allow-natives-syntax」つけて起動すると%付きの関数使えるよ
%OptimizeFunctionOnNextCall(func)とか

もしかしたらChromeでも
--js-flags=--allow-natives-syntax
でできるかもね

そんなに早くはならないと思う
精々色んなチェックの分のオーバーヘッドが無くなるくらい <> Name_Not_Found<>sage<>2013/09/28(土) 00:11:07.31 ID:???<> これが通じる奴はゆとり

・ジェキュー
・ジャミ
・ジャモ
・アドイベ
・プロタイ
・フォイ <> Name_Not_Found<>sage<>2013/09/28(土) 01:02:03.34 ID:???<> window.location.reload()

document.location.reload()

この違いってなんですか? <> Name_Not_Found<>sage<>2013/09/28(土) 01:48:03.53 ID:???<> ない <> Name_Not_Found<>sage<>2013/09/28(土) 01:48:43.90 ID:???<> document.location == location //true <> Name_Not_Found<>sage<>2013/09/28(土) 05:58:20.41 ID:???<> document.location == window.document.location // true <> 434<>sage<>2013/09/28(土) 06:02:29.73 ID:???<> 回答どうも
違いが理解できませんでしたが、
どうでもよさそうなので気にしないことにします <> Name_Not_Found<>sage<>2013/09/28(土) 09:08:36.95 ID:???<> location == document.location == window.document.location // false <> Name_Not_Found<>sage<>2013/09/28(土) 10:06:36.32 ID:???<> window.location は書き換え可能
document.location はIE以外書き換え可能 <> Name_Not_Found<><>2013/09/28(土) 10:41:24.59 ID:ctMqRiXE<> b=a.replace(/(a+)/, 'A');
alert(RegExp.$1);
c=b.replace(/(b+)/, 'B');
alert(RegExp.$1);

2回目のreplaceでマッチしなかった時にRegExp.$1が変わらない(1回目のalertと2回目のalertが同じ)って当然? <> Name_Not_Found<>sage<>2013/09/28(土) 11:19:05.56 ID:???<> JavaScriptでバリデーションする場合によく使われるライブラリって何ですか? <> Name_Not_Found<>sage<>2013/09/28(土) 11:38:42.33 ID:???<> JSHint使って良いJavaScriptを書くためには
Enforcing optionsは全部trueにしたほうがいいですか?
Relaxing optionsは全部falseにしたほうがいいですか? <> Name_Not_Found<>sage<>2013/09/28(土) 11:42:12.09 ID:???<> >>432
オプション付けないと使えないんですね
特殊な記法をすれば普通に使えるのかと勘違いしてテンションあがってしまった
ありがとうございました <> Name_Not_Found<>sage<>2013/09/28(土) 13:50:24.70 ID:???<> >>443
自分で意味を理解していないと
良いJavaScriptは書けません。 <> Name_Not_Found<>sage<>2013/09/28(土) 13:54:48.35 ID:???<> >>443
内容を読んで、自分に不要だと思ったものだけをOFFにすればよい。 <> Name_Not_Found<>sage<>2013/09/28(土) 14:27:14.36 ID:???<> 裸のJS想像しながらjQueryってヤツだな <> Name_Not_Found<>sage<>2013/09/28(土) 15:22:35.98 ID:???<> JSHintのmaxstatementsは関数ごとのステートメントの数を制限するそうですが
このステートメントのサンプルを誰かください <> Name_Not_Found<>sage<>2013/09/28(土) 15:29:51.56 ID:???<> ステートメントのサンプルって何
行数が多い関数を警告するだけでしょ <> Name_Not_Found<>sage<>2013/09/28(土) 18:24:47.95 ID:???<> >>448
いくらなんでも一つの関数にこんなに
行数が多いとかありえねーよwww

って数値を指定しておけば良い。 <> Name_Not_Found<>sage<>2013/09/28(土) 18:35:11.97 ID:???<> 即時関数の中に全部いれるパターンだとどうなるんだろ <> Name_Not_Found<>sage<>2013/09/28(土) 18:39:28.68 ID:???<> さっぱりよくわかりません
サンプルコードをください <> Name_Not_Found<>sage<>2013/09/28(土) 18:46:09.27 ID:???<> ブラウザのように戻ると進むの機能を実装します
A→B→C→D
と移動したあと
戻るボタンを二回押し、
A→B
に戻ったあと、
A→B→E
と別ルートに行ったとすると、最初のC→Dルートには、戻る・進むボタンでは行けなくなるのでしょうか? <> Name_Not_Found<>sage<>2013/09/28(土) 19:03:41.30 ID:???<> A→B→C→D→C→B→E
履歴を記録しといて、履歴からたどれば <> Name_Not_Found<>sage<>2013/09/28(土) 19:04:39.80 ID:???<> >>453
ブラウザではどうなりますか?

ブラウザのように実装するのでしょう? <> Name_Not_Found<>sage<>2013/09/28(土) 19:25:22.83 ID:???<> >>454
そういう正味の履歴も、ないと不便なので付けてあります
>>455
chromeでは消えるみたいです
ただブラウザによってはどうも違うみたいで、実装が謎なんですよね <> Name_Not_Found<>sage<>2013/09/28(土) 19:39:57.55 ID:???<> 実装が謎な理由が今分かりました
google検索では、A→B→A→Cと行っても、「戻る」からBが消えない
検索エンジンではそういう動作の方が便利なので、これはどうも履歴を操作してそうしているようです
wikipediaで移動してもそういう動きにはならない
つまりgoogle検索で試していたから良く分からない挙動になっていたようです <> Name_Not_Found<>sage<>2013/09/28(土) 20:17:01.15 ID:???<> B消えるだろ <> Name_Not_Found<>sage<>2013/09/28(土) 20:40:33.54 ID:???<> 解決したんだからぶり返すな <> Name_Not_Found<>sage<>2013/09/28(土) 21:17:17.06 ID:???<> $(document)をキャッシュして使用していました
scrollハンドラの動作がおかしいので調べたところ、
キャッシュした$documentにスクロールハンドラを付けた時には一度しか動作せず
関数内で$documentを作り直した時には動作するようです
しかし$(document)は、作り直そうがキャッシュしようが同じものではないのでしょうか?
scrollハンドラ以外で問題出ていないのも謎です
こんな問題に当たった人いますか? <> Name_Not_Found<>sage<>2013/09/28(土) 21:29:57.64 ID:???<> キャッシュの問題ではなく、他のイベント内でスクロールハンドラを付け外ししてるので、
その時に外しちゃってるみたいです
失礼しました <> Name_Not_Found<>sage<>2013/09/28(土) 22:23:58.75 ID:???<> chromeデバッガでconsole.dirしたオブジェクトを
その後変更すると、console上のdir出力も書き換わってしまい
出力された時点のオブジェクトではなくなってしまうのですが
これを解決する方法ありますか? <> Name_Not_Found<>sage<>2013/09/28(土) 22:46:00.72 ID:???<> >>461
この件ですが、
$(document).off('scroll', 存在しない関数)
となっていたため、第二引数がundefinedになり
その結果documentにbindされた全てのscrollイベントがリムーブされていたのが原因でした <> Name_Not_Found<>sage<>2013/09/28(土) 23:12:15.96 ID:???<> /* jshint devel:false */

console.log(1);

これでエラーにならないのはなぜですか? <> Name_Not_Found<>sage<>2013/09/29(日) 02:04:26.07 ID:???<> エラーになる理由がない <> Name_Not_Found<>sage<>2013/09/29(日) 13:49:26.73 ID:???<> jshintの設定でdevelをfalseしたらalertやconsole系で警告がでるはずなんですよ <> Name_Not_Found<>sage<>2013/09/29(日) 14:21:46.05 ID:???<> /* jshint devel: false */
で警告出たよ
http://stackoverflow.com/questions/14513398/jshint-not-recognizing-devel
この人はeの後ろにスペースを空けてなかったらしい
表記が微妙に間違ってるのでは <> Name_Not_Found<>sage<>2013/09/29(日) 14:47:18.78 ID:???<> ドットインストールいいね
独学だと基礎的なところをぽろぽろ落としてたりするから助かる <> Name_Not_Found<>sage<>2013/09/29(日) 15:15:37.83 ID:???<> でないでないでないでない
表記は464で書いた通りなのにでないでないでない
jshint v2.1.11 <> Name_Not_Found<>sage<>2013/09/29(日) 15:19:20.18 ID:???<> Environmentsの設定だけなぜか効かない <> Name_Not_Found<>sage<>2013/09/29(日) 15:25:07.74 ID:???<> ちあんみにnpmからいれたjshint <> Name_Not_Found<>sage<>2013/09/29(日) 15:27:53.58 ID:???<> npmから入れたら古いだろう? <> Name_Not_Found<>sage<>2013/09/29(日) 16:07:16.42 ID:???<> npm空入れても公式の最新2.1.11です <> Name_Not_Found<>sage<>2013/09/29(日) 21:06:01.77 ID:???<> OSから再インストールせよ <> Name_Not_Found<>sage<>2013/09/30(月) 01:44:36.27 ID:???<> sublimeのJSHintを使ったらいい <> Name_Not_Found<>sage<>2013/09/30(月) 02:04:21.86 ID:???<> 数値を最小値と最大値の間におさめるなど
数値関係のユーティリティライブラリありませんか?
underscore.numberというのがあったのですが、上記のような関数はないようです <> Name_Not_Found<>sage<>2013/09/30(月) 02:15:42.19 ID:???<> >>476
飽和演算とかsaturationでググると吉かも。 <> Name_Not_Found<>sage<>2013/09/30(月) 05:01:24.56 ID:???<> 1つのページでPOSTとGETをするフォームがあるのですが、
そこをXMLHttpRequestで非同期で処理しています。
XMLHttpRequestは2つインスタンスを作成するべきでしょうか?
それとも1つを使い回ししていいのでしょうか? <> Name_Not_Found<>sage<>2013/09/30(月) 05:58:19.36 ID:???<> >>476
作るは簡単なんだけど、適切な関数名が
思いつかないんだよね。

>>477
軽く飽和演算で検索してみたけど、
演算した時に飽和する話が多かった。 <> Name_Not_Found<>sage<>2013/09/30(月) 06:03:14.92 ID:???<> >>476
> underscore.numberというのがあったのですが、上記のような関数はないようです
おい、あるじゃねーかw

https://github.com/hanamura/underscore.number
pinch _.num.pinch(num, min, max)

Puts num in a range of min to max.

Returns min if num is smaller than min, max if num is larger than max, and num itself if it’s already in a range of min to max.

_.num.pinch(12, 0, 10); // 10
_.num.pinch(5, 0, 10); // 5
_.num.pinch(-3, 0, 10); // 0 <> Name_Not_Found<>sage<>2013/09/30(月) 06:04:51.36 ID:???<> (function(){
 function AAA() {
  var a = document.getElementById('a');
  var F = function() { //処理 };
  a.addEventListener('load', F, false);
  a.addEventListener('click', F, false);
 }
 window.addEventListener('load', AAA, false);
}());


ページロード時とaをクリックしたときにFを実行するために上のように書いてみました。
a.addEventListener('load'〜ができないのでここを
window.addEventListener('load'〜に変えたけど動きませんでした。
色々ためしたものの拉致があかなかったので、

(function(){
 function AAA() {
  var a = document.getElementById('a');
  //処理
  a.removeEventListener('click', AAA, false);
  a.addEventListener('click', AAA, false);
 }
 window.addEventListener('load', AAA, false);
}());

このようにしてみたところうまく動きました。
これで大丈夫でしょうか?なおすところがあったらご指導お願いします。
jQueryに頼らない書き方を覚えたいのでjQueryはなしでお願いします。 <> Name_Not_Found<>sage<>2013/09/30(月) 06:21:36.82 ID:???<> 10x400くらいの数字が入った二次元配列をtableにして表示するのに高速な方法教えてください。
それに最初の行の各セルに異なるclickイベントを付けたいです。 <> Name_Not_Found<>sage<>2013/09/30(月) 08:43:43.21 ID:???<> >>482
よくわかんないけど
array[tr要素10個][td要素400個]
こういうこと?
for'()する時毎回length取得するんじゃなくてfor(vari,len=array[tr要素1].length; i<len; i++)
ってやるぐらいしか <> Name_Not_Found<>sage<>2013/09/30(月) 08:51:37.86 ID:???<> 質問ですが、
GoogleってJavaScriptコードを外部ファイルではなくHTML内に記述していますよね?(cssもそうですが)
これって何か理由があるのでしょうか?
JSファイルは外部ファイルにすべきと聞いてそうしていたのでとても気になります。
外部ファイルにした方がブラウザのキャッシュを利用して読み込みを軽減してトラフィックとかも減りますよね?

もし理由がわかる方いらっしゃれば教えてください。 <> Name_Not_Found<><>2013/09/30(月) 11:52:12.15 ID:VtFspj3d<> >>484
リクエストが減るからじゃね? <> Name_Not_Found<>sage<>2013/09/30(月) 14:21:57.81 ID:???<> jQueryでスクロール座標を得る時に、今まで$(document).scrollTop()等を使っていたのですが
http://stackoverflow.com/questions/10324753/jquery-function-to-get-the-curren-viewport
ここでは$(window)を使っていました
どちらが妥当ですか? <> Name_Not_Found<>sage<>2013/09/30(月) 15:11:09.30 ID:???<> http://jsperf.com/getscrollvalues-jquery

傾向的にwindowが速いようです <> Name_Not_Found<>sage<>2013/09/30(月) 15:34:52.08 ID:???<> >>484
逆にキャッシュに残らないようにしてるんじゃね? <> Name_Not_Found<>sage<>2013/09/30(月) 15:57:45.20 ID:???<> >>480
あれ本当ですね
早とちりでした
ありがとうございました <> Name_Not_Found<>sage<>2013/09/30(月) 17:39:02.47 ID:???<> 関数の実行時間を測る簡単な方法を教えてください <> Name_Not_Found<><>2013/09/30(月) 18:06:43.10 ID:VtFspj3d<> console.time() <> Name_Not_Found<>sage<>2013/09/30(月) 18:16:23.38 ID:???<> performance.now() <> Name_Not_Found<>sage<>2013/09/30(月) 19:49:33.00 ID:???<> >>482
2次元でなく単次元のTypedArrayを使う
どうしても2次元が良ければBinaryDataのArrayTypeを使う(ES6) <> Name_Not_Found<>sage<>2013/09/30(月) 20:12:07.84 ID:???<> >>491
エラーになりましたが? <> Name_Not_Found<>sage<>2013/09/30(月) 20:47:54.42 ID:???<> hogeという変数?オブジェクト?とdocument.getElementById('hoge')が連動するのは仕様なのでしょうか?
var hoge = document.getElementById('hoge');
alert(hoge.value);
という感じで今までやってたのですが、ふとしたことからいちいち定義しないでも、
alert(hoge.value);でいけることに気づきました。 <> Name_Not_Found<>sage<>2013/09/30(月) 21:28:10.99 ID:???<> 仕様 <> Name_Not_Found<>sage<>2013/09/30(月) 21:28:43.97 ID:???<> operaなんだが、

var obj = { "items": [] },
   val1 = "---",
   val2 = "===";

obj.items.push ( {"p1":val1, "p2":val2 } );

として、

var str = JSON.stringify (obj);

とすると、

 {"items": [ {"p1":"---", "p1":"==="} ] }

にならずに、

 {"items": "[{\"p1\":\"---\",\"p2\":\"===\"}]" }

となるのは仕様? <> Name_Not_Found<>sage<>2013/09/30(月) 21:56:50.66 ID:???<> 気のせい <> Name_Not_Found<>sage<>2013/09/30(月) 23:10:32.69 ID:???<> >>496
どこの仕様書に載ってるんですか。 <> Name_Not_Found<><>2013/09/30(月) 23:41:14.65 ID:CvGcS7pT<> expressフレームワークとはMVCなのでしょうか?
MVCとぐぐってもMVCみたいにでてませんが
なんという分類でしょうか?教えてください <> Name_Not_Found<>sage<>2013/09/30(月) 23:41:51.02 ID:???<> デファクトスタンダード <> Name_Not_Found<>sage<>2013/09/30(月) 23:44:14.21 ID:???<> opacityを使ったフェードアウト時
残像が残っていることに気付きました
opacityに0を設定し、それを読んでも実際に0なのに、
スクリプトの実行中は
opacityが0.1くらいの薄さで残るのです
どうすれば解決できるでしょうか
ブラウザはchromeです <> Name_Not_Found<><>2013/09/30(月) 23:52:49.55 ID:CvGcS7pT<> >>501
意味わかりません
MVCとはどうちがうのでしょうか?教えてください <> Name_Not_Found<>sage<>2013/09/30(月) 23:53:44.78 ID:???<> M=Model
V=View
C=Controller
なのですが
MVCじゃないフレームワークはどのような感じなんでんしょうか?
MVCじゃないとどういうのか教えてください <> Name_Not_Found<>sage<>2013/09/30(月) 23:56:54.09 ID:???<> MVCデザイン以外を知らないとかゆとり世代ですか? <> Name_Not_Found<>sage<>2013/10/01(火) 00:22:37.19 ID:???<> ソートするテーブルのセルにbuttonを入れています。
buttonにはイベントが設定されているのですが、
ソートするたびにイベントを追加しています。
イベント追加前にイベントを削除する処理は入れなくてもいいのでしょうか?
メモリリークとかなんかしますか? <> Name_Not_Found<>sage<>2013/10/01(火) 01:24:48.95 ID:???<> >>502の件ですが、
どうもDOM操作の直後に重い処理をすると、処理の間はDOMに反映しないようです・・? <> Name_Not_Found<>sage<>2013/10/01(火) 01:34:35.30 ID:???<> opacityが0になったら関数としてcallbackを呼び出していたのですが、
0に設定した後もsetTimeoutでcallbackを呼ぶようにしたら、
CSSへの反映の後にcallbackが呼ばれるようになりました\(^o^)/
ありがとうございました <> Name_Not_Found<>sage<>2013/10/01(火) 02:12:32.34 ID:???<> そういうことになるから
jQuery使えってことになるんだよ。 <> Name_Not_Found<>sage<>2013/10/01(火) 02:54:57.88 ID:???<> jQueryで出来るってことは使わなくても出来るってことなんだよ <> Name_Not_Found<>sage<>2013/10/01(火) 03:08:46.50 ID:???<> 使わないのが効率悪いから
jQuery使うんでしょ? <> Name_Not_Found<><>2013/10/01(火) 03:22:54.28 ID:euIGZs7o<> 時間測ったりした結果を配列とかに入れてるのですが、これをjson形式やデータベースの形に変換してファイルに出力するためにはどうすればいいでしょうか?
Javascript単体でできるのでしょうか?またはPHPなどを使うのでしょうか? <> Name_Not_Found<>sage<>2013/10/01(火) 03:50:09.86 ID:???<> function JSONDL(data) {
var json = JSON.stringify(data)
var blob = new Blob([json], {type: 'application/json'})
var link = document.createElement('a')
link.href = URL.createObjectURL(blob)
link.download = 'mydata.json'
link.click()
} <> Name_Not_Found<>sage<>2013/10/01(火) 05:30:15.95 ID:???<> 【環境】windows7 64bit home chrome
【何をしたのか】
http://orteil.dashnet.org/cookieclicker/
というブラウザゲームを起動し、F12でconsoleを呼び出し、以下を記述。また、ブックマークに登録し、起動してからブックマークレットとして呼び出す。
javascript:
for(var i = 0 ; i < 100 ; i++ )
{Game.ClickCookie();}
または
Game.ClickCookie();Game.ClickCookie();
【エラーメッセージ】なし
【期待する結果】複数回Game.ClickCookie();を呼び出したい。
また、ブックマークレットにも登録したい。
【サンプルコード】上記です。
ブラウザゲームを少しいじってみようと思ったのですが、うまくいきませんでした。
sourcesを直接書き換えればうまくいきますが、consoleの使い方も覚えたいのと、ブックマークレットという機能も使えるようになりたいと思っています。
ソースのGame.ClickCookieは以下のようになっています。ゲームの作者もソースをパクらなければ改造ぐらいはしていいよ、とのことでした。
Game.ClickCookie=function(){
if (new Date().getTime()-Game.lastClick<1000/250){}
else{
if (new Date().getTime()-Game.lastClick<1000/15){
Game.autoclickerDetected+=Game.fps;
if (Game.autoclickerDetected>=Game.fps*5) Game.Win('Uncanny clicker');
}Game.Earn(Game.computedMouseCps);
Game.handmadeCookies+=Game.computedMouseCps;
if (Game.prefs.particles) Game.cookieParticleAdd();
if (Game.prefs.numbers) Game.cookieNumberAdd('+'+Beautify(Game.computedMouseCps,1));
Game.cookieClicks++;
}
Game.lastClick=new Date().getTime();
} <> Name_Not_Found<>sage<>2013/10/01(火) 07:28:17.99 ID:???<> まともな回答帰ってこないなココ。 <> Name_Not_Found<>sage<>2013/10/01(火) 07:29:19.77 ID:???<> 例えばどれがよ? <> Name_Not_Found<>sage<>2013/10/01(火) 08:08:06.05 ID:???<> >>514
そのGame.ClickCookie()関数は4ms以内に複数回呼び出した場合、
1回呼び出したことにしかならん

Game.ClickCookie();Game.ClickCookie();とか書いても4ms以内に
終わるだろうから意味ない <> Name_Not_Found<>sage<>2013/10/01(火) 08:22:11.70 ID:???<> ちょっと違った
前回の呼び出しから4ms経過してないときは何もしないだった
ループで回しても、;で区切って続けて書いても、
各呼び出しの間は4ms未満だと思うので最初の1回以外は意味ないね
たとえループで1秒間延々と回したとしても、意味があるのは最初の1回だけかな <> Name_Not_Found<>sage<>2013/10/01(火) 08:48:45.92 ID:???<> オブジェクトの最初を簡単に取得する方法はありますか?
var obj = {1:"1",2:"2",3:"3"};
if (obj.item(0)) {
//objに何か入ってる
}
みたいな感じにしたいのですが、
Object.keys(obj).length > 0
とかでもいいのですが、わりと新しく導入されたようで、
IE8ぐらいでも平気な簡単な方法があれば教えてください。 <> Name_Not_Found<>sage<>2013/10/01(火) 08:50:32.71 ID:???<> 質問失礼します。
javascriptのcanvas上の矩形内にhtmlを表示したいです。
しかもそのhtmlが貼られた矩形を回転したいです。
可能ならばhtmlを画像化せずに表示したいのですが、可能でしょうか?
(回転表示が行えるのであれば、無理にcanvas上じゃなくても良いです)
よろしくお願いします。 <> Name_Not_Found<><>2013/10/01(火) 11:46:59.66 ID:JEpLn2iz<> トップに縦500px、横1200pxのGifアニメを置いています。
これが完全にスクロールアウトして何秒も経つとブラウザが固まりやすいので
それを防ぐために、
下へスクロールしていったときにGifアニメを高さ100pxだけ残して固定させて
スクロールに追従させたいんです。

まず、そのGifファイルを<div id="top-bar"></div>で囲みました。
次に、以下を<body></body>間に置きました。

<script type="text/javascript">
var zahyou=scrollTop();
if( zahyou > 400 ) {
document.write('<style type="text/css">div#top-bar{position:fixed; top:100px;}</style>');
}
else {
document.write('<style type="text/css">div#top-bar{position:static;}</style>');
}
</script>

動作確認してみると、上手くいきませんでした。
(そのGifアニメが通常通り完全にスクロールアウトしていってしまいます。)

どこをどのように直せばいいか、教えていただけないでしょうか。 <> Name_Not_Found<>sage<>2013/10/01(火) 11:49:28.57 ID:???<> for
for in
forEach

それぞれどういうときに使うんですか? <> Name_Not_Found<>sage<>2013/10/01(火) 12:05:21.32 ID:???<> >>519
for-inとhasOwnPropertyならIE8でも使えるんじゃないの? <> Name_Not_Found<>sage<>2013/10/01(火) 12:11:51.93 ID:???<> >>521
document.write使うな <> Name_Not_Found<>sage<>2013/10/01(火) 12:26:49.96 ID:???<> >>520
画像にしたく無いならCSS3のtransform:rotate()とか試してみれ <> Name_Not_Found<>sage<>2013/10/01(火) 12:41:57.65 ID:???<> >>522
forは普通の制御構文
for-inはオブジェクトの中身を順番に処理するときに使う
forEachは配列を順番に処理するときに使う
配列の場合でもforEachは使わずforを使う人がけっこういる <> Name_Not_Found<>sage<>2013/10/01(火) 13:53:12.14 ID:???<> classNameに複数のクラス名が記述されている時、
それが分割されて格納されている配列ってDOMの中にないんですか? <> 521<><>2013/10/01(火) 15:14:41.99 ID:s69EcN0o<> document.writeを使わない代わりに次のコードをhead内に記述しました。

<link rel="stylesheet" type="text/css" href="kousei1.css" id="kouseiCSS">
<script type="text/javascript">
var zahyou=window.scrollTop();
if( zahyou > 400 ) { document.getElementById('kouseiCSS').href = "kousei1.css"; }
else { document.getElementById('kouseiCSS').href = "kousei2.css"; }
</script>

kousei1.cssにはdiv#top-bar{position:static;}と記述し、
kousei2.cssにはdiv#top-bar{position:fixed; top:-400px;}と記述しました。
しかし、実際に400px下へスクロールするとGifアニメの下部100px分は固定されませんでした。
1度ページを読んだ後に2種類のcssをスクロール位置で切り替えることは
不可能なのでしょうか。
他に方法はありませんか?できればコードで記述してくださると嬉しいのですが。 <> Name_Not_Found<>sage<>2013/10/01(火) 15:20:03.09 ID:???<> >>527
classList <> Name_Not_Found<>sage<>2013/10/01(火) 15:28:53.77 ID:???<> >>528
onscroll <> Name_Not_Found<>sage<>2013/10/01(火) 15:36:25.88 ID:???<> >>528
window.scrollTop()ってエラーでない? <> Name_Not_Found<>sage<>2013/10/01(火) 15:44:41.63 ID:???<> CSSのlinkタグにid属性つけてhref書き換えるって動くんだなw笑えるw <> Name_Not_Found<>sage<>2013/10/01(火) 16:27:37.17 ID:???<> そういえば昔のsafariは、ページ読み込み後にhrefを変更しても
CSSが反映されないバグがあった気がするけど、あれもう直ったのかな <> Name_Not_Found<>sage<>2013/10/01(火) 16:33:59.23 ID:???<> ここはクロスブラウザの罠に嵌めて楽しむスレだから気にするな <> Name_Not_Found<>sage<>2013/10/01(火) 16:45:12.43 ID:???<> >>497 自己解決。
なるほどねぇ。 <> 521<>sage<>2013/10/01(火) 21:48:54.22 ID:???<> 結局、
$('#top-bar').css({ 'position': 'fixed', 'top':-400, });
みたいな記述でスタイルを切り替えることになりました。
ソースコード検索をしたら色々と例が見つかったので
ソレを利用すればなんとかなりそうです。
ChromeとIE7で挙動が違うのが気にかかりますが・・・ <> 514<>sage<>2013/10/01(火) 22:30:04.41 ID:???<> ありがとうございます。
最後に
document.getElementById('bigCookie').onclick=Game.ClickCookie;})();
が足りないのが原因でした。ご迷惑おかけしました <> Name_Not_Found<>sage<>2013/10/01(火) 23:20:10.10 ID:???<> stopPropagationでは他のライブラリへの伝播が止まってしまい困ります
自前のハンドラに対する伝播だけを止めるにはどうしたらいいですか? <> Name_Not_Found<>sage<>2013/10/02(水) 01:11:33.70 ID:???<> jqueryのイベントオブジェクト
e,handleObj.selectorにセレクタが入っている時と入っていない時があるのですが
どのセレクタで反応したのか必ず調べるにはどうしたらいいのでしょうか <> Name_Not_Found<>sage<>2013/10/02(水) 01:13:57.23 ID:???<> つまり同種のイベントは同じゲートウェイを通過させたいのです <> Name_Not_Found<>sage<>2013/10/02(水) 01:30:46.11 ID:???<> ハンドラのセットの仕方が間違ってたのでselectorがないだけでした
すみません <> Name_Not_Found<><>2013/10/02(水) 02:27:36.85 ID:++jRA9WW<> Apacheにて、下記の設定をし、

<FilesMatch "\.(gif|jpg)$">
ExpiresActive Off
</FilesMatch>


HTMLに下の記述をし
@<img src="hoge.gif" width=30 height=40>

A<script type="text/javascript" src="saitama.js"></script>

JavaScript部分(saitama.js)
document.write('<img src="saitama.gif" width="40" height="30" />');
※実際はもっと複雑です。


@のflower.gif画像ファイルのログを見ると、キャッシュされてないため、これを埋め込んだHTMLにアクセスがあった分だけログに記録されますが、
AのようにJavaScriptで埋め込んだ画像saitama.gifはキャッシュされてしまっているようで、二度目のアクセスはアクセスログに記録されません。(F5なら記録される)

Aもアクセスログが記録されるような書き方はありますか?
JavaScriptを使うなと言えばそれまでですが、JSでどうにかしたいのです。 <> Name_Not_Found<>sage<>2013/10/02(水) 09:47:46.15 ID:???<> ジェイクエリーのイベントをconsoleに出力する方法を教えて下さい <> Name_Not_Found<><>2013/10/02(水) 10:11:26.64 ID:3vucsB+Q<> chiba.gif?hoge,getTime() <> Name_Not_Found<>sage<>2013/10/02(水) 10:46:17.98 ID:???<> jqueryのイベントを付ける順番によってパフォーマンスは変化しますか? <> Name_Not_Found<>sage<>2013/10/02(水) 11:11:26.26 ID:???<> ハンドラでthisを参照できない問題は以下のように解決できるのではないでしょうか?

var a = {
b:function b(){
console.log(b._this.c);
},
c:'hoge'
}

for ( var key in a ){
if (typeof a[key] === 'function'){
a[key]._this = a;
}
}

a.b(); <> Name_Not_Found<>sage<>2013/10/02(水) 11:16:10.91 ID:???<> 普通にbindすればいいじゃん <> Name_Not_Found<>sage<>2013/10/02(水) 11:26:21.81 ID:???<> bindは遅いのです <> Name_Not_Found<><>2013/10/02(水) 11:44:54.98 ID:Y2SqMS34<> >>546
var a = {
  b : function(){
    var A = this;
    console.log(A.c);
  },
  c : 'hoge'
};

こう書くのはもう古いんだろうか… <> Name_Not_Found<>sage<>2013/10/02(水) 11:47:58.83 ID:???<> >>549
それだとbを呼ぶときにa.b()としないとだめだよね <> Name_Not_Found<><>2013/10/02(水) 11:51:24.17 ID:Y2SqMS34<> どゆこと? <> Name_Not_Found<>sage<>2013/10/02(水) 11:56:12.37 ID:???<> >>546はx=a.bとかやってx()で呼び出す場合に、
関数bの中でaをthisとして参照できない問題を解決したいんじゃないの? <> Name_Not_Found<>sage<>2013/10/02(水) 11:59:17.53 ID:???<> $(document).on('click',a.b);

などとすると、thisではbからaを得ることが出来ないのです <> Name_Not_Found<><>2013/10/02(水) 12:02:29.68 ID:Y2SqMS34<> あー、なるほど
結局、thisキーワードを使わなければ良いのだね? <> Name_Not_Found<>sage<>2013/10/02(水) 12:04:20.44 ID:???<> sageるの忘れてたすまん

$(document).on('click',function(evt){ a.b(evt); });

こうするのと、どっちが効率よいのだろう <> Name_Not_Found<>sage<>2013/10/02(水) 12:12:07.07 ID:???<> ビルド方式はイニシャルコストがかかりますがハンドラ呼び出しコストは低いというメリットがあります <> Name_Not_Found<>sage<>2013/10/02(水) 13:35:45.97 ID:???<> もともとオブジェクトを走査していくクラスビルド関数があったので、
$_で始まる関数名を持つメソッドに親オブジェクトを持たせる機能を組み込んだら
いい感じになりました <> Name_Not_Found<>sage<>2013/10/02(水) 14:00:22.99 ID:???<> addEventListenerの第二引数にオブジェクトを指定すると
オブジェクトのhandleEventメソッドを呼んで、thisはオブジェクトを指してくれるらしいので
IE8以下用にaddEventListenerをエミュレートする関数を用意してあげれば多くのことが解決するのでしょうか? <> Name_Not_Found<>sage<>2013/10/02(水) 14:11:25.03 ID:???<> そんな仕様あったっけ?
いずれにしろ呼び出されるのがhandleEventメソッド固定ならほとんど使い道がないような <> Name_Not_Found<>sage<>2013/10/02(水) 14:13:12.50 ID:???<> >>559
関数でラップせずに閉じたスコープが作れるとか <> Name_Not_Found<>sage<>2013/10/02(水) 14:33:38.32 ID:???<> >>559
逆にイベントを直接受ける関数を1つにまとめられるからかなり有用だよ
イベントオブジェクトが引数に必要な関数ばかり作ると、
イベント発生の時にしか呼べない関数が多数できることになるし。 <> Name_Not_Found<>sage<>2013/10/02(水) 14:43:06.23 ID:???<> 同じところで受けたかったら同じメソッドを指定したらいいだけでは? <> Name_Not_Found<>sage<>2013/10/02(水) 16:48:25.57 ID:???<> http://jsbin.com/amarUn/1/edit

documentに、body用のクリックハンドラを付けました
しかし四角をクリックしても反応してしまいます
bodyの上の要素に対するクリックがbodyまで突き抜けないようにするにはどうしたらいいですか? <> Name_Not_Found<>sage<>2013/10/02(水) 17:20:53.73 ID:???<> >>563
$('#test').on('click',function(e){e.stopPropagation();});

ちなみに上じゃなくて下な。
W3Cにわかりやすい図がある
http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/images/eventflow.png <> Name_Not_Found<>sage<>2013/10/02(水) 17:31:43.93 ID:???<> ありがとうございます
イベント的にはルートノードが上なんですね <> Name_Not_Found<>sage<>2013/10/02(水) 17:43:53.43 ID:???<> stopPropagationで止めるとすると、イベントを遮りたいすべての要素にイベントを付けないといけなくなるので
bodyのclickハンドラでe.targetを見て判定したいと思います
$(document).on('click','body',fn)
とdocumentにデレゲートした場合、
e.targetのイベント発生元情報がデレゲート元オブジェクトに変わっているようです
e.targetを使う場合はデレゲートは使えないということでしょうか <> Name_Not_Found<>sage<>2013/10/02(水) 18:00:03.89 ID:???<> すみません勘違いでした
stopPropagationしてたからe.targetが変わってただけでした(∵) <> Name_Not_Found<>sage<>2013/10/02(水) 18:59:45.71 ID:???<> イベントのバブリングを止める話じゃなかったんか
解決したみたいだが、一応。(...こういうことだったのかな?)
http://jsbin.com/amarUn/10/edit <> Name_Not_Found<>sage<>2013/10/02(水) 19:25:59.49 ID:???<> すいませんがもう不必要です^^; <> 567<>sage<>2013/10/02(水) 19:28:56.29 ID:???<> ↑なり済ましです! <> 567本人です<>sage<>2013/10/02(水) 19:31:25.25 ID:???<> ここまで全部偽者ですw <> Name_Not_Found<>sage<>2013/10/02(水) 19:41:20.95 ID:???<> ワロチww <> Name_Not_Found<>sage<>2013/10/02(水) 20:01:11.73 ID:???<> >>568
ありがとうございます
同じやり方でした <> Name_Not_Found<>sage<>2013/10/02(水) 20:10:17.64 ID:???<> ですので不必要でした(∵) <> Name_Not_Found<>sage<>2013/10/02(水) 20:43:22.72 ID:???<> すべてのイベントを一つのハンドラで受け取り
そこから分配するのは確かにいいかもしれませんね <> Name_Not_Found<>sage<>2013/10/02(水) 21:05:10.26 ID:???<> とても勉強になりました <> Name_Not_Found<>sage<>2013/10/02(水) 22:57:52.00 ID:???<> jqueryではイベントがfocus→focusin、blur→focusoutに名前が変わっているようですが何故ですか <> Name_Not_Found<>sage<>2013/10/03(木) 01:25:38.29 ID:???<> ライブラリだけの質問はライブラリスレでお願いします。 <> Name_Not_Found<>sage<>2013/10/03(木) 04:00:03.08 ID:???<> querySelectorのセレクタについて質問です

<div>
<p><a>いいい</a></p>
<a>あああ</a>
</div>

div.querySelector("");
あああ だけを取得したいのですが、どのようなセレクタを書けばいいでしょうか?
イメージ的には > a のような感じです <> Name_Not_Found<>sage<>2013/10/03(木) 04:43:46.66 ID:???<> document.querySelector('div > a').textContent <> Name_Not_Found<>sage<>2013/10/03(木) 12:22:21.45 ID:???<> if(/version ([0-9\.]+)/.test(ua)) vn = RegExp.$1; else vn = 0;
のようなことをやってたのですがRegExp.$1〜$9は廃止予定で非推奨と聞きました
RegExpオブジェクトを使わない場合どのような書き方ができるのしょうか <> Name_Not_Found<>sage<>2013/10/03(木) 12:26:19.15 ID:???<> >>581
RegExp.exec()の結果を使う。 <> Name_Not_Found<>sage<>2013/10/03(木) 13:30:01.79 ID:???<> vn = (ua.match(/version ([0-9\.]+)/)||"00")[1] <> Name_Not_Found<>sage<>2013/10/03(木) 13:42:21.40 ID:???<> >>583
すげ〜感心したが、その後でif(vn)とかやってると結果が>>581と変わっちまわない? <> Name_Not_Found<>sage<>2013/10/03(木) 13:46:28.28 ID:???<> ならどれでも好きなのをどうぞ

vn = (ua.match(/version ([0-9\.]+)/)||[0,0])[1] //オリジナル
vn = (ua.match(/version ([0-9\.]+)/)||"00" )[1] //文字列型
vn =+(ua.match(/version ([0-9\.]+)/)||"00" )[1] //数値型 <> Name_Not_Found<>sage<>2013/10/03(木) 13:48:24.72 ID:???<> キモ <> Name_Not_Found<>sage<>2013/10/03(木) 13:49:39.84 ID:???<> これも好き
vn = ua.match(/version ([0-9\.]+)/)
vn = vn ? vn[1] : 0 <> Name_Not_Found<>sage<>2013/10/03(木) 14:04:21.81 ID:???<> 変数に入る型がバラバラなのは気持ち悪いな
だからもし>>584の場合は数値に揃えないんなら
0の代わりに空文字にして
最後出力する時に
vn || '0'
とした方がいいな

このやり方だとバージョンがないよと言う状態を持たせておいて
バージョンがなければ0にするっていうのがわかりやすい
vn || '無し'
みたいにしたくなってもとても良い <> Name_Not_Found<>sage<>2013/10/03(木) 14:17:04.20 ID:???<> 数値と文字列はしっかり区別したいところだね。
やっぱり型付が緩い言語で一番問題になるのはここだから、
使う時じゃなくて事前に揃えておいた方がいいと思う。 <> Name_Not_Found<>sage<>2013/10/03(木) 14:27:57.76 ID:???<> >>582のアドバイスをいただいたあと色々調べて最終的に関数化しました
ありがとうございました

var r, ua = navigator.userAgent;
if(r = /MSIE ([0-9\.]+)/.test(ua)) return "IE " + r[1];
else if(r = /Chrome\/([0-9\.]+)/.exec(ua)) return "Chrome " + r[1];
else if(r = /Firefox\/([0-9\.]+)/.exec(ua)) return "Firefox " + r[1];

else return ""; <> Name_Not_Found<>sage<>2013/10/03(木) 14:30:31.46 ID:???<> これはひどい。。。 <> Name_Not_Found<>sage<>2013/10/03(木) 14:49:35.75 ID:???<> 誤植だろ <> Name_Not_Found<>sage<>2013/10/03(木) 14:56:55.14 ID:???<> Chrome、Firefox、IE9で開発をしています。
ソースコード中に旧型の8進数リテラルがあり、strict modeではエラーになります。
そこでモダンブラウザが対応している新型に切り替えたのですが、
今度は当然レガシーブラウザでエラーになります。
可読性を崩したくないのですがどうするのが一番よいでしょうか?
場合によってはレガシーブラウザは切り捨てます。 <> Name_Not_Found<>sage<>2013/10/03(木) 15:07:43.95 ID:???<> chromeでよく落ちるようになり、バグるようになりました
デバッガで追っていくと突然落ちたり、本来実行するべきじゃないところがいきなり実行されたり。
ロールバックすると起きなくなったのでコードに原因があったようです
JavaScriptで変なことをしても影響が環境の枠の外に及ぶのはおかしいと思うのですが
なんでそんなことが起きるんですか <> Name_Not_Found<>sage<>2013/10/03(木) 15:42:45.30 ID:???<> chromeがバグったんじゃね? <> Name_Not_Found<>sage<>2013/10/03(木) 15:53:04.72 ID:???<> 困りますな〜 <> Name_Not_Found<>sage<>2013/10/03(木) 15:57:38.08 ID:???<> 嘘乙
証拠のビデオうpはよ <> Name_Not_Found<>sage<>2013/10/03(木) 16:01:56.09 ID:???<> 調べてみるとどうも宇宙線の影響だそうで、稀によくあることらしいです
ありがとうございました <> Name_Not_Found<>sage<>2013/10/03(木) 16:06:25.83 ID:???<> 今まで一つのハンドラで受けてtargetで分岐してたのを、
jQueryのデレゲートに置き換えたのがやったことです
その結果変な風になりました
一つのハンドラで受けていた場合、その処理が終われば他の同種のハンドラに飛びませんが
要素ごとにデレゲートした場合は飛ぶので、その結果変なことになったのか
あるいはbootstrapとの相性か
何なのか分かりませんが <> Name_Not_Found<>sage<>2013/10/03(木) 16:07:56.36 ID:???<> jQuery固有の問題はライブラリスレで <> Name_Not_Found<>sage<>2013/10/03(木) 16:08:44.00 ID:???<> jQuery固有の問題ではありません <> Name_Not_Found<>sage<>2013/10/03(木) 16:11:21.83 ID:???<> で、何が聞きたいの?
変なふうになったってのしか伝わってこないんだけど? <> Name_Not_Found<>sage<>2013/10/03(木) 16:13:00.96 ID:???<> 本気で答えて欲しい質問じゃなくでっち上げなことがすぐ分かるなw <> Name_Not_Found<>sage<>2013/10/03(木) 16:15:27.03 ID:???<> 原因不明な異常なことが起きてるので
同種の体験談とか経験知があればお聞かせください <> Name_Not_Found<>sage<>2013/10/03(木) 16:18:04.59 ID:???<> ライブラリスレへどうぞ <> Name_Not_Found<>sage<>2013/10/03(木) 16:22:18.24 ID:???<> ライブラリはJavaScriptで書かれているんですよ
ライブラリの正常な機能に関してならばライブラリスレにも行きましょう
事件はライブラリではなくJavaScriptで起きてるんです <> Name_Not_Found<>sage<>2013/10/03(木) 16:24:33.30 ID:???<> ソースも貼らないで人に伝わる言葉も選ばない
日記や愚痴は他所でやってくれ
ここは真剣に質問する場所なんだから <> Name_Not_Found<>sage<>2013/10/03(木) 16:24:54.18 ID:???<> (6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。 <> Name_Not_Found<>sage<>2013/10/03(木) 16:31:47.67 ID:???<> 必要なことは>>599に書きました
聞きたいことは>>604です
分かってください <> Name_Not_Found<>sage<>2013/10/03(木) 16:33:02.81 ID:???<> 足りないことは具体的に聞いてもらわないと
こちらとしても答えられません <> Name_Not_Found<>sage<>2013/10/03(木) 16:33:24.64 ID:???<> 原因が不明なんだからソースを抜き出すことも不可能です
分からないことに文句を言うつもりはありませんので、
分からないのなら黙っておいてください <> Name_Not_Found<>sage<>2013/10/03(木) 16:35:59.97 ID:???<> 偽物が出始めましたね
問題をまとめると
「何をするとJavaScriptはブラウザをクラッシュさせるのか?」
ということです
回答お待ちしております <> Name_Not_Found<>sage<>2013/10/03(木) 16:36:49.71 ID:???<> わかる。
わかるよー。
寂しかったんだね。
おーヨチヨチ <> Name_Not_Found<>sage<>2013/10/03(木) 16:38:51.62 ID:???<> ブラウザの実装が不十分ならよくある話
WebGL、WebAudio、WebRTC、IndexedDB、Worker
全て何回も落ちた経験がある
そういうもん <> Name_Not_Found<>sage<>2013/10/03(木) 16:40:31.32 ID:???<> >>612
ついにでっち上げ質問の内容も忘れたかw
哀れwwwwww <> Name_Not_Found<>sage<>2013/10/03(木) 16:52:12.72 ID:???<> Chromeを再インストしたの?拡張機能全部切ってみた?dev版使って無いよね? <> Name_Not_Found<>sage<>2013/10/03(木) 16:58:45.20 ID:???<> ありがとうございます
不合理にあらわれる突然の穴を避けるには、
なるべくトリッキーなことは避けるくらいしか方法ないですかね。。 <> Name_Not_Found<>sage<>2013/10/03(木) 17:00:35.18 ID:???<> トリッキーっていうのは>>585みたいなのを言うんだぜ
言葉は正しく使おうな <> Name_Not_Found<>sage<>2013/10/03(木) 17:00:41.86 ID:???<> >>616
ロールバックしたら安定したので再インストールなどはしていません
今はロールバックしたコードから
徐々に不安定なコードに近づけて原因を探してるところです <> Name_Not_Found<>sage<>2013/10/03(木) 17:15:18.68 ID:???<> 分かったら教えてくれよな
あ、経過報告は要らないからね
黙って頑張れ! <> Name_Not_Found<>sage<>2013/10/03(木) 19:12:09.96 ID:???<> 空の<div>を生成して短いテキストを入れたいとき、
innerHTML, innerText, textContent, nodeValueで一番速いのはどれですか <> Name_Not_Found<>sage<>2013/10/03(木) 19:16:53.83 ID:???<> 早いとかクソじゃなくて
その使い方だと紛れも無くtextContentがもっとも適切 <> Name_Not_Found<>sage<>2013/10/03(木) 19:25:38.00 ID:???<> どんなに適切でなかろうが数倍の速度の違いが出るなら早いほうを取る <> Name_Not_Found<>sage<>2013/10/03(木) 19:34:43.35 ID:???<> 使い方が適切な方がいいに決まってる
それを顧みない最適化は文字列連結にjoinを使うのと同じですぐに破綻する <> Name_Not_Found<>sage<>2013/10/03(木) 20:03:44.64 ID:???<> GeckoとSM、BlinkとV8プロジェクトは今DOMをJSエンジンに組み込むことを
もっとも重要な目標の1つにおいてるから速度なんて容易に変わり得る。
ECMAも乗り気だし。 <> Name_Not_Found<>sage<>2013/10/03(木) 20:43:31.71 ID:???<> >>590の関連です
バージョンを比較する関数を作ったのですが何か腑に落ちません
もっと効率化する方法や、もっと常識的な設計はあるのでしょうかか?

function versionCompare(a,b) {
var i, l = Math.max(a.length,b.length);
_a = a.split('.');
_b = b.split('.');
for(i = 0; i < l; i++) {
if(_a[i] === undefined) _a[i] = 0; else _a[i] = parseInt(_a[i],10);
if(_b[i] === undefined) _b[i] = 0; else _b[i] = parseInt(_b[i],10);
if(_a[i] > _b[i]) return -1;
if(_a[i] < _b[i]) return 1;
}
return 0;
} <> Name_Not_Found<>sage<>2013/10/03(木) 20:45:42.39 ID:???<> あ、すいません
Math.max(a.length,b.length) は split の後でしかもアンダーバーが抜けてますね・・・ <> Name_Not_Found<>sage<>2013/10/03(木) 20:51:30.38 ID:???<> しかも_a, _bがグローバル変数に・・・修正しました

function versionCompare(a,b) {
var i, l, _a, _b;
_a = a.split('.');
_b = b.split('.');
l = Math.max(_a.length, _b.length);
for(i = 0; i < l; i++) {
if(_a[i] === undefined) _a[i] = 0; else _a[i] = parseInt(_a[i],10);
if(_b[i] === undefined) _b[i] = 0; else _b[i] = parseInt(_b[i],10);
if(_a[i] > _b[i]) return -1;
if(_a[i] < _b[i]) return 1;
}
return 0;
} <> Name_Not_Found<>sage<>2013/10/03(木) 20:56:51.81 ID:???<> if(+a > +b) return -1;
if(+a < +b) return 1;
return 0 <> Name_Not_Found<>sage<>2013/10/03(木) 21:08:41.58 ID:???<> >>628
屋上に寝室、地下に露天風呂くらいめちゃくちゃ
基本の真ん中辺りからやり直した方がいい <> Name_Not_Found<>sage<>2013/10/03(木) 21:18:25.07 ID:???<> 台所に滑り台がある感じ <> Name_Not_Found<>sage<>2013/10/03(木) 21:23:52.02 ID:???<> 初心者は焦ってコードを組み立てようとしないで1行1行の意味を考えて書こう。
全体を整えることを意識するのはそれができるようになってから。 <> Name_Not_Found<>sage<>2013/10/03(木) 21:27:36.96 ID:???<> 自分でも何か変だなとは思うのですが、どこが悪いのか分からない状態なので質問しました
できれば一つ一つ指摘していただけないでしょうか <> Name_Not_Found<>sage<>2013/10/03(木) 21:31:12.04 ID:???<> まずaとbに何が入ってくるのかハッキリさせよう
"12.34"とか"30"とか?
それと>>629は試したの? <> Name_Not_Found<>sage<>2013/10/03(木) 21:35:22.78 ID:???<> オブジェクトってピラミッドの頂点がwindowで
windowsの下に幹部がいて
幹部の下に手下がいて
その下に派遣社員みたいな役割がいる

こんな認識であってますか? <> Name_Not_Found<>sage<>2013/10/03(木) 21:38:23.33 ID:???<> >>634
引数a,bはバージョン文字列ですので"10.2"とか"12.4.25"などです
>>629は試しましたが望んだ結果にならずよくわかりませんでした <> Name_Not_Found<>sage<>2013/10/03(木) 21:39:46.59 ID:???<> >>635
それでいいよ
>>636
そういう大事なことはちゃんと言わないと
皆超能力者じゃないんだから <> Name_Not_Found<>sage<>2013/10/03(木) 21:51:06.28 ID:???<> スリム化したいんならこれでいいんじゃない

a = a.split('.');
b = b.split('.');
for(var i = 0; i < Math.max(a.length, b.length); i++) {
if(a[i]|0 > b[i]|0) return -1;
if(a[i]|0 < b[i]|0) return 1;
}
return 0; <> Name_Not_Found<>sage<>2013/10/03(木) 21:56:34.15 ID:???<> バージョン名に 1.0.3b みたいなアルファベットが入る可能性はないのか。 <> Name_Not_Found<>sage<>2013/10/03(木) 22:03:28.33 ID:???<> >>594の件ですが、
古いクリックハンドラは処理する対象がないとfalseを返すようになっていて、
するとjQueryはstopPropagationとpreventDefaultを実行します
つまり意図せずに、イベントが止まりやすくなっていました
それを新しく書き換えたので、今まで止まっていたイベントの伝播が発生するようになりました
その結果<a href="#"></a>で画面が移動するようになり
その現象を解明するために色々コードを書いてるうちに不安定になりました
どうすれば不安定になったのかは分かりませんが、
きっかけとなった現象の原因は分かったのでこれでよしとします
ありがとうございました <> Name_Not_Found<>sage<>2013/10/03(木) 22:11:18.46 ID:???<> 再現性のないブラウザがちょっと落ちたくらいで一々騒ぎ立てんな <> Name_Not_Found<>sage<>2013/10/03(木) 22:18:05.14 ID:???<> 再現性はありますよ
継続的に何度も落ちまくったのです
勝手に補完しないように <> Name_Not_Found<>sage<>2013/10/03(木) 22:26:34.59 ID:???<> 【サンプルコード】現象を再現可能な最小限のコードを書いてください。 <> Name_Not_Found<>sage<>2013/10/03(木) 22:27:58.12 ID:???<> 原因が不明なのだからコードを抜き出すことが不可能なのは自明です
そのテンプレこそこのスレのバグです
次に立てる人はデバッグして下さいね <> Name_Not_Found<>sage<>2013/10/03(木) 22:28:59.28 ID:???<> 意地っ張り乙
お前のPCの調子が悪いのかもしれないだろうが
日記はお断り <> Name_Not_Found<>sage<>2013/10/03(木) 22:30:00.38 ID:???<> 助けてください!原因不明です!

マジ基地ワロタw <> Name_Not_Found<>sage<>2013/10/03(木) 22:32:56.96 ID:???<> 単に事実を述べているだけですよ
コードを抜き出せるようになるのはデバッグの最終段階でしょう
バグに悩まされている人にコードを抜き出せなどと言うのはナンセンスです <> Name_Not_Found<>sage<>2013/10/03(木) 22:33:13.92 ID:???<> >>638
undefined|0で0になるんですね、すごくシンプルになりました

>>639
そこまで考えると大変ですね・・・

ありがとうございました <> Name_Not_Found<>sage<>2013/10/03(木) 22:35:01.12 ID:???<> あちゃー
言葉が理解できない人だったか…
失敬失敬


もう帰っていいよ <> Name_Not_Found<>sage<>2013/10/03(木) 22:40:20.39 ID:???<> >>647
主要コードを抜き出せないなら全部公開すればいいだけの話
自分のローカル環境だけであーだこーだ言われても
こちらとしては再現性が全くないから嘘や戯言と同じでしか無い <> Name_Not_Found<>sage<>2013/10/03(木) 22:49:01.79 ID:???<> ライブラリを組み合わせる場合、
たとえばクリックをstopPropagationをすると開いたポップオーバーが閉じない、
という現象が出てきますね
stopPropagationは基本的には使わず、
preventDefaultは何か処理した時には基本的に行なう、
という感じがいいでしょうか? <> Name_Not_Found<>sage<>2013/10/03(木) 22:50:22.59 ID:???<> >>649=650
自演の人格批判をして何が楽しいんですか
こちらは質問スレらしいレスしかしていないので
人格批判ですぐ話を逸らすあなたに言われるようなことはありませんよ <> Name_Not_Found<>sage<>2013/10/03(木) 22:52:44.58 ID:???<> ブラウザのデフォ動作を防ぎたければpreventDefaultを使う <> Name_Not_Found<>sage<>2013/10/03(木) 22:57:33.84 ID:???<> >>652
質問の仕方が下手すぎるんだよ

上手な質問の文章を作るという作業は
回答をもらいやすいというだけでなく
良いコードを書く上でも大事なんだぜ <> Name_Not_Found<>sage<>2013/10/03(木) 23:06:55.47 ID:???<> 全部公開しろとかアホすぎて何も言えんわ <> Name_Not_Found<>sage<>2013/10/03(木) 23:08:02.67 ID:???<> こちらが提示できる条件は全部出しました
これ以上できることはありません <> Name_Not_Found<>sage<>2013/10/03(木) 23:09:05.67 ID:???<> 解答者傲慢すぎww <> Name_Not_Found<>sage<>2013/10/03(木) 23:13:28.05 ID:???<> 自演乙 <> Name_Not_Found<>sage<>2013/10/03(木) 23:58:37.01 ID:???<> イベントハンドラの中でイベントハンドラをappendしたら
追加したハンドラにも、その当該イベントは伝播しますか? <> Name_Not_Found<>sage<>2013/10/04(金) 00:11:19.43 ID:???<> JavaScriptってオブジェクトじゃないですか
例えば = とか + とかそういうのも上書きしたりできますか? <> Name_Not_Found<><>2013/10/04(金) 00:22:57.40 ID:QHzg+peO<> >>660
一行目で何を言いたいのかわからんかったから詳しく <> Name_Not_Found<>sage<>2013/10/04(金) 00:36:12.91 ID:???<> オーバーロードは無理 <> Name_Not_Found<>sage<>2013/10/04(金) 01:09:41.63 ID:???<> オーバーロードはES7までおあずけ <> Name_Not_Found<>sage<>2013/10/04(金) 03:06:43.96 ID:???<> array.sortの代わりにクイックソートを使ったら速くなったりしますか? <> Name_Not_Found<>sage<>2013/10/04(金) 03:10:32.71 ID:???<> http://jsperf.com/quicksort-in-js/4

jsパーフにありました〜
クイックソートおそすぎわろた
努力のかいなさすぎ <> Name_Not_Found<>sage<>2013/10/04(金) 03:17:27.67 ID:???<> お目目が節穴かな??
http://jsperf.com/quicksort-in-js/8 <> Name_Not_Found<>sage<>2013/10/04(金) 03:41:52.29 ID:???<> 古いバージョンだったのですか
ありがとうございます
これは努力の甲斐ありますね <> Name_Not_Found<>sage<>2013/10/04(金) 04:49:07.76 ID:???<> 一番速いFFpop+を更に合理化してみました
配列の処理は基本的に重いのでベンチには現われませんが。
あなたはこれよりキュンキュンに出来ますかな?

function qs(array) {
var pivot,left,right,v,len;
len = array.length;
if (len <= 1) {
return array;
}
pivot = array.pop();
left = [];
right = [];
for (; len>1; len--) {
v = array.pop();
(v < pivot ? left : right).push(v);
}
return qs(left).concat(pivot, qs(right));
} <> Name_Not_Found<><>2013/10/04(金) 08:49:14.13 ID:1DC/3sxI<> ユーザーが入力したURL文字列を受け取り、
それを検証して妥当であるか、Public Suffixは含まれているかを調べたいのですが、
Public Suffixを調べるにはどう処理をすればいいでしょうか?
また、そういうLibraryがあれば教えてください。 <> Name_Not_Found<>sage<>2013/10/04(金) 11:23:50.14 ID:???<> あごさんがmasterブランチにプルリクエスト送ってることにショック
そこは別のブランチ作って送信するべきなのに・・・・ <> Name_Not_Found<>sage<>2013/10/04(金) 13:03:18.96 ID:???<> 配列操作しない方が速いよね。某テキストに載ってたものをJS化。
function qs0(array) { qs1(array, 0, a.length-1); return array; }
function qs1(a, i, j) {
if(j <= i) return;
var pivot = a[j], s = i;
for(var k = i; k < j; ++k)
if(a[k] <= pivot) { var x = a[s]; a[s] = a[k]; a[k] = x; ++s; }
a[j] = a[s]; a[s] = pivot; qs1(a, i, s-1); qs1(a, s+1, j);
} <> Name_Not_Found<>sage<>2013/10/04(金) 13:13:54.08 ID:???<> げげ、 a.length-1 => array.length-1 <> Name_Not_Found<>sage<>2013/10/04(金) 13:47:59.20 ID:???<> そこまでするのならasm.jsとTypedArrayを使うべし
V8も型決め型への対応を進めてる <> Name_Not_Found<>sage<>2013/10/04(金) 14:47:04.42 ID:???<> asm.jsは4,5回書いたが未だ慣れん
とにかくエラー表示が昔のIE並でデバッグかしづらくて敵わん <> Name_Not_Found<>sage<>2013/10/04(金) 15:02:59.06 ID:???<> ありがとうございます
でもものすごく遅いです
http://jsperf.com/sort-sort/3

何かの間違いかと思ってjsbinで確かめましたが正常動作しているように見えます
http://jsbin.com/UwIniQO/1/edit

どこか間違ってるのでしょうか? <> Name_Not_Found<>sage<>2013/10/04(金) 15:45:45.81 ID:???<> 誰が早いと言った? <> Name_Not_Found<>sage<>2013/10/04(金) 15:48:53.37 ID:???<> !? <> Name_Not_Found<>sage<>2013/10/04(金) 15:51:52.22 ID:???<> http://benchmarkjs.com/

このベンチマークを使おうと思って

<script src="benchmark.js"></script>

と読み込んでサンプル通り

var suite = new Benchmark.Suite;

を実行するといきなりエラーになりますが
どうしたらいいのですか? <> Name_Not_Found<>sage<>2013/10/04(金) 15:53:16.55 ID:???<> >>638,639
バージョン比較関数ですが、最終的にbなどにも対応させてこんな感じになりました

function versionCompare(a,b) {
if(typeof a !== "string" || typeof b !== "string")
throw new TypeError('引数が文字列でないか、引数が不足しています');
var f = function(c) {
if(!c||/^[0-9]/.test(c)) return c|0;
if(/^[a-z]/.test(c)) return -123 + c.charCodeAt(0);
if(/^[A-Z]/.test(c)) return -91 + c.charCodeAt(0);
};
if(!(a = a.match(/(?:[0-9]+|[a-zA-Z]+)/g))) a = ["0"];
if(!(b = b.match(/(?:[0-9]+|[a-zA-Z]+)/g))) b = ["0"];
for(var i = 0, l = Math.max(a.length, b.length); i < l; i++) {
a[i] = f(a[i]);
b[i] = f(b[i]);
if(a[i] > b[i]) return -1;
if(a[i] < b[i]) return 1;
}
return 0;
} <> Name_Not_Found<>sage<>2013/10/04(金) 16:09:02.40 ID:???<> chromeのコンソール出力ですが
大量に出力しリアルタイムに状況を見たい場合にスクロールアウトして不便です
上に追加されて下に流れていけば見やすいと思うのですが
なんとかする方法ありませんか? <> Name_Not_Found<>sage<>2013/10/04(金) 16:12:18.01 ID:???<> いやしくもコンソール出力なら出力に追随しろと思うんですが・・ <> Name_Not_Found<>sage<>2013/10/04(金) 16:26:29.30 ID:???<> >>665
今の今まで「JSぷれふ(jspref)」と勘違いしていた… <> Name_Not_Found<>sage<>2013/10/04(金) 16:29:54.91 ID:???<> >>130
それは保守しにくくてバグを生みやすいコード <> Name_Not_Found<>sage<>2013/10/04(金) 18:13:44.60 ID:???<> >>680

window.clear = console._commandLineAPI.clear
とコンソールに打つ

プログラム側でclear()してから再度今までのログを書き出すようにする <> Name_Not_Found<>sage<>2013/10/04(金) 18:23:33.09 ID:???<> 昔、JSコンソールがなくて、テキストエリアで手作りしていた頃の

value += '¥n' + '新しいログ';

とするか

value = '新しいログ¥n' + value

とするかの話じゃないのん? <> Name_Not_Found<>sage<>2013/10/04(金) 18:38:02.49 ID:???<> クリアしなきゃ無尽蔵に溜まって重くなる
毎回クリアしてラスト数十件くらいを出力
それ以前は必要に応じて出力できるようにするのがベスト <> Name_Not_Found<>sage<>2013/10/04(金) 18:38:44.87 ID:???<> こうだな
console.clear = console._commandLineAPI.clear <> Name_Not_Found<>sage<>2013/10/04(金) 18:49:42.33 ID:???<> >>675
qs0は渡された配列をそのまま整列するじゃない。ベンチマークの方で毎回
新しく配列を作って渡すんでないとへんなことになりそうだよね。 <> Name_Not_Found<>sage<>2013/10/04(金) 19:07:45.59 ID:???<> ありがとうございます
consoleっていろいろ機能あったんですね
console.timeとかも便利そうだ <> Name_Not_Found<>sage<>2013/10/04(金) 19:16:03.78 ID:???<> そもそも上のソートは浮動小数点演算だから
SMIの範囲だとまた変わるよ <> Name_Not_Found<>sage<>2013/10/04(金) 19:18:33.05 ID:???<> あと要素数が少なければ当然オーバーヘッドの問題も出てくる <> Name_Not_Found<>sage<>2013/10/04(金) 19:55:02.30 ID:???<> 連想配列の中にあるデータを取得したいのですが
いちいちキーを指定して取得するのが大変です
連想配列には配列など色々入ってるのですが
一気に全て展開する方法ありませんか?
教えてください <> Name_Not_Found<>sage<>2013/10/04(金) 20:08:07.05 ID:???<> 例を書いて
もし出力表示のことをいってるのならconsole.dirだけど
きっと分割代入を求めてるんだと思う <> Name_Not_Found<>sage<>2013/10/04(金) 20:14:48.76 ID:???<> 四つの整数から最小のものを得る一番速い方法を教えてください <> Name_Not_Found<>sage<>2013/10/04(金) 20:28:25.71 ID:???<> s = a<b ? a<c ? a<d ? a : d : c<d ? c : d : b<c ? b<d ? b : d : c<d ? c : d <> Name_Not_Found<>sage<>2013/10/04(金) 20:34:57.08 ID:???<> http://jsperf.com/math-min-vs-ternary1

function min (a,b,c,d) {
var min1,min2;
min1 = a < b ? a : b;
min2 = c < d ? c : d;
return min1 < min2 ? min1 : min2;
}

ありがとうございます
この方が少し速いようです <> Name_Not_Found<>sage<>2013/10/04(金) 20:44:55.88 ID:???<> >>696
自分の環境じゃ後者のほうが微妙に早いよ <> 692<>sage<>2013/10/04(金) 20:55:57.21 ID:???<> 答えてください <> Name_Not_Found<>sage<>2013/10/04(金) 20:56:19.74 ID:???<> 質問の意味が分からないから答えようがない <> Name_Not_Found<>sage<>2013/10/04(金) 21:05:57.44 ID:???<> エスパーだと配列のjoinみたいに全要素の値を文字列として欲しいんじゃないか? <> Name_Not_Found<>sage<>2013/10/04(金) 21:16:37.64 ID:???<> ちゃんと質問しろよ <> Name_Not_Found<>sage<>2013/10/04(金) 21:18:56.04 ID:???<> >>698
「一気にすべて展開」がどういう意味なのかちゃんと書いてくれ <> Name_Not_Found<>sage<>2013/10/04(金) 21:22:11.84 ID:???<> 一次元配列にするってことじゃね <> 669<><>2013/10/04(金) 21:46:25.05 ID:1DC/3sxI<> 解決しました。

お前ら無能すぎ <> Name_Not_Found<>sage<>2013/10/04(金) 21:53:55.96 ID:???<> >>704
お前みたいな奴は一番成長しない <> Name_Not_Found<>sage<>2013/10/04(金) 22:09:52.09 ID:???<> 配列のintersectionっていうんですか
重複した値の抽出をしたいんですが
一番速い方法はどういうものですか? <> Name_Not_Found<>sage<>2013/10/04(金) 22:14:46.00 ID:???<> といっても方法は
連想配列にしてキーをチェック、配列のままindexOfで検索、
の二択くらいですかね <> Name_Not_Found<>sage<>2013/10/04(金) 22:16:53.66 ID:???<> http://qiita.com/cocottejs/items/7afe6d5f27ee7c36c61f <> Name_Not_Found<>sage<>2013/10/04(金) 22:29:29.54 ID:???<> ありがとうございます

http://jsperf.com/array-intersection-filter-vs-for-loop

この結果から見てもfilterはforより速いようですね <> Name_Not_Found<>sage<>2013/10/04(金) 22:46:13.64 ID:???<> firefoxの内部実装も基本的にfor

function ArrayFilter(func) {
var array = this;
var buffer = [];
for (var i = 0; i < array.length; i++) {
var elem = array[i];
if (func(elem, i, array)) buffer.push(elem);
}
return buffer;
} <> Name_Not_Found<><>2013/10/04(金) 22:58:24.75 ID:1DC/3sxI<> >>705
答えられなかった時点でお前は俺より下なんだが? <> Name_Not_Found<><>2013/10/04(金) 22:59:06.31 ID:1DC/3sxI<> 自力で解決できちゃう俺ってやっぱすげーわ
それに比べて>>705みたいな奴ってほんと底辺だよな <> Name_Not_Found<>sage<>2013/10/04(金) 22:59:34.74 ID:???<> エスパー募集スレと聞いて <> Name_Not_Found<>sage<>2013/10/04(金) 23:01:48.86 ID:???<> >>711
上とか下とか言ってる奴に本当に出来る人間は一人もいない <> Name_Not_Found<><>2013/10/04(金) 23:04:04.99 ID:1DC/3sxI<> IDも出さずに口だけ達者って惨めだよね
俺は出来たのにお前は出来なかった っていう結果が出てるのに
現実見ような? <> Name_Not_Found<>sage<>2013/10/04(金) 23:09:33.44 ID:???<> はい、次の方どうぞ〜 <> Name_Not_Found<>sage<>2013/10/04(金) 23:12:02.20 ID:???<> >>715
歩いてる横をいきなり全力ダッシュしてはい勝った〜とか言ってるピエロがお前だよ <> Name_Not_Found<>sage<>2013/10/04(金) 23:12:33.37 ID:???<> >>709
console.logとか余計なもんつけるべきではない
http://jsperf.com/array-intersection-filter-vs-for-loop/2 <> Name_Not_Found<><>2013/10/04(金) 23:18:56.46 ID:1DC/3sxI<> >>717
事実を突きつけられてよほど悔しいようだな
なんどもで言ってやるよ

お 前 は 無 能

いくら底辺でもそれくらい理解して自覚しておけよな <> Name_Not_Found<>sage<>2013/10/04(金) 23:22:43.73 ID:???<> >>719
ますますピエロに見えるw <> Name_Not_Found<>sage<>2013/10/04(金) 23:22:53.83 ID:???<> (4) 常に自発的に調べる心構えを持ってください。

自己解決出来るようなら質問しないでくださいね <> Name_Not_Found<><>2013/10/04(金) 23:24:52.04 ID:1DC/3sxI<> >>720
とうとう単芝まで生やしちゃったか、ダサいよお前

>>721
はい、すみませんでした
無能の皆さんには無理なレベルの質問でしたね
今後気をつけます <> Name_Not_Found<>sage<>2013/10/04(金) 23:26:32.91 ID:???<> 単芝って何だよw
お前の文化圏の常識を持ち込むなカス
ゴミだと自覚しなさい <> Name_Not_Found<>sage<>2013/10/04(金) 23:27:58.90 ID:???<> 貴重な絶滅危惧種を発見 <> Name_Not_Found<>sage<>2013/10/04(金) 23:36:19.57 ID:???<> >>718
filterParって何かと思ったらES7のparallelsなのかあ
おもしろい <> Name_Not_Found<>sage<>2013/10/04(金) 23:36:58.42 ID:???<> 単芝は単芝を使うような馬鹿にはわからない <> Name_Not_Found<>sage<>2013/10/04(金) 23:42:09.17 ID:???<> お前の文化圏の常識を持ち込むなカス(キリッ <> Name_Not_Found<>sage<>2013/10/04(金) 23:43:13.80 ID:???<> (単芝がなんなのかホントにわからないけど質問したら怒られそう) <> Name_Not_Found<>sage<>2013/10/04(金) 23:43:47.38 ID:???<> >>718
ありがとうございます
結局filterが速いという結果で、三番目はエラーになりましたが・・? <> Name_Not_Found<>sage<>2013/10/04(金) 23:46:49.35 ID:???<> >>728
ググればすぐわかるような事を質問したらそら怒られるわな <> Name_Not_Found<>sage<>2013/10/04(金) 23:49:10.87 ID:???<> >>728
頭の悪い連中の間ではwを使うのがタブーらしいよ
そういう奴らの多くは困ったことにその村の常識が街の人にも通用すると思ってるんだよな
それがまさに自身の視野の狭さを示しているのだということに気付いていない <> Name_Not_Found<>sage<>2013/10/04(金) 23:53:58.87 ID:???<> お前ら煽られすぎだろ
心に余裕ない奴等だなぁ・・・
必死に粘着してる奴が若干1名いるが、顔真っ赤だぞ?少し落ち着けよ <> Name_Not_Found<>sage<>2013/10/04(金) 23:55:20.59 ID:???<> w

これ使ってる奴と使ってない奴で比べるなら、使ってる奴の方が頭悪く見える <> Name_Not_Found<>sage<>2013/10/04(金) 23:56:18.62 ID:???<> http://jsperf.com/intersection-indexof-vs-object

オブジェクトを使う版とindexOfを使う版で比較したところ、
個数が10ならほぼ同等、増やすとオブジェクト版が速くなりました
もっともオブジェクト版はオブジェクトのキーに出来るような値にしないといけないので
正確には同じではありませんが。
もっと速い方法はありますか? <> Name_Not_Found<>sage<>2013/10/05(土) 00:01:09.16 ID:???<> >>729
三番目はマルチスレッド処理
それとfilter云々というか方式の違い
http://jsperf.com/array-intersection-filter-vs-for-loop/3 <> Name_Not_Found<>sage<>2013/10/05(土) 00:09:41.44 ID:???<> それだとforが速いですね
一考の余地がありそうです
ありがとうございました <> Name_Not_Found<>sage<>2013/10/05(土) 00:12:27.50 ID:???<> >>709>>735みれば分かるけど
たったこれだけのバージョンの違いでもバージョンが上がるほど
ループの性能割合が上がってきてると見ていいと思う

どちらが早いとかに下手に拘る必要はない
それこそ速度に凝るならasm.jsとかparallels.jsの出番だろう
自然に書くのが一番 <> Name_Not_Found<>sage<>2013/10/05(土) 00:33:09.96 ID:???<> http://jsperf.com/intersection-filter-vs-for

forにしたところ劇的に速くなりました\(^o^)/
関数呼び出しは遅いと聞いていたのでfilterの方が速いのは違和感があったのですが、
ここまで変わるとは
ありがとうございました <> Name_Not_Found<>sage<>2013/10/05(土) 00:45:43.50 ID:???<> Parallelsとやらの効果を入れるとどうなの? <> Name_Not_Found<>sage<>2013/10/05(土) 01:17:42.93 ID:???<> asmって何だと思ったら事前にコンパイルする機能ですか〜
でも、asm向けに書いて将来asmが廃れたらとか考えると、あまり積極的に使いたくはないかな <> Name_Not_Found<>sage<>2013/10/05(土) 01:28:51.54 ID:???<> 型推論のサポートという点で将来的にも最低限の効果はある
http://www.publickey1.jp/blog/13/googleasmjschrome.html <> Name_Not_Found<>sage<>2013/10/05(土) 01:38:35.62 ID:???<> JavaScriptもかなりネイティブに迫ってきたね。
asm.js使ったのだと追い抜いてるのもちらほらある。

http://arewefastyet.com/#machine=12&view=breakdown&suite=asmjs-ubench
http://arewefastyet.com/#machine=12&view=breakdown&suite=asmjs-apps <> Name_Not_Found<>sage<>2013/10/05(土) 05:25:31.50 ID:???<> 色を混ぜたり濃さ調整の計算をさせるのに便利なクラスってありますか? <> Name_Not_Found<>sage<>2013/10/05(土) 05:31:00.20 ID:???<> jquery-color <> Name_Not_Found<>sage<>2013/10/05(土) 08:00:31.98 ID:???<> >>740
事前にコンパイルするんじゃなくて、型情報を書いておくことで
JITが効率的に処理できるようにするだけ。
素のJavaScriptとしても実行できるから万が一廃れても問題ないよ <> Name_Not_Found<>sage<>2013/10/05(土) 08:32:18.98 ID:???<> ChromeはJITがasm.jsソースの型情報を有効利用するような感じなものを暫定的に実装したらしい
Firefoxはasm.jsソースをロードされた段階で全部ネイティブにコンパイルするのでJITとはちょっと違う <> Name_Not_Found<>sage<>2013/10/05(土) 14:41:14.75 ID:???<> Objectのkeyに使用できる文字って、制限というか決まりはありますか?
varの変数名だと決規則がありますよね(先頭に数字は使えないなど)。

なので、疑問に思って質問です。
例えばこんなのです。

var key = '.C\@[]{}",http;//test/?a=b&c=d';
var obj = {};
obj[key] = 'ok';
console.log(obj);

一応、Chromeでは正常に動作するようですが・・・こういう文字をkeyを使っていいものか正しいのか不安です。 <> Name_Not_Found<>sage<>2013/10/05(土) 14:50:37.31 ID:???<> 決まりはあります <> Name_Not_Found<>sage<>2013/10/05(土) 14:57:41.21 ID:???<> どんな決まりがあって、どこで規定されているのか知りたいです。 <> Name_Not_Found<>sage<>2013/10/05(土) 15:01:25.48 ID:???<> >>747
決まりはありません。
オブジェクトプロパティの名前には、空文字列を含む、文字列に変換できるあらゆるものが使えます。
748は馬鹿なので信じなくていいです。 <> Name_Not_Found<>sage<>2013/10/05(土) 15:02:27.69 ID:???<> ただし、JavaScript 識別子として正しくないプロパティ名にアクセスするには
ブラケット(角括弧)表記法でのみしかアクセスできないので注意しましょう。 <> Name_Not_Found<>sage<>2013/10/05(土) 15:07:03.88 ID:???<> >>747
変数名にも制限はないよ <> Name_Not_Found<>sage<>2013/10/05(土) 15:11:03.83 ID:???<> 数字をキーにしても文字列に変換されるんですか? <> Name_Not_Found<>sage<>2013/10/05(土) 15:11:13.35 ID:???<> >>750
ありがとうございます! <> Name_Not_Found<>sage<>2013/10/05(土) 15:13:21.69 ID:???<> 748 Name_Not_Found sage 2013/10/05(土) 14:50:37.31 ID:???
決まりはあります


752 Name_Not_Found sage New! 2013/10/05(土) 15:07:03.88 ID:???
>>747
変数名にも制限はないよ




これは酷い・・・
馬鹿は口を開かないほうがいいわ <> Name_Not_Found<>sage<>2013/10/05(土) 15:17:09.12 ID:???<> >>750
いや待てwこれが決まりだろw
「空文字列を含む、文字列に変換できるあらゆるものが使えます。 」 <> Name_Not_Found<>sage<>2013/10/05(土) 15:20:59.42 ID:???<> >>756
そう、だから「使用できる"文字"に制限はあるか?」という質問に対しては無いだろ <> Name_Not_Found<>sage<>2013/10/05(土) 15:22:53.37 ID:???<> >>757
質問はこうだぞ?
「Objectのkeyに使用できる文字って、制限というか決まりはありますか?」 <> Name_Not_Found<>sage<>2013/10/05(土) 15:27:29.55 ID:???<> nullは使えるんですか?はい論破 <> 747<>sage<>2013/10/05(土) 15:28:41.79 ID:???<> 747です。
もう答えを頂き疑問も解消したのでこれ以上は申し訳ないですが結構です。
なんだから荒れ気味なので・・・。(ID出しておきます)

質問の意図を汲んで答えてくださった>>750さんには感謝します。
また、その他ご解答頂いた皆様もありがとうございました。 <> 747<><>2013/10/05(土) 15:29:19.19 ID:i7c2daZU<> ID出し忘れました。 <> Name_Not_Found<>sage<>2013/10/05(土) 15:30:18.90 ID:???<> null,true,false,undefinedは使えるんですか? <> Name_Not_Found<>sage<>2013/10/05(土) 15:46:53.77 ID:???<> 関数も使えるな
文字じゃないオブジェクトそのものもいけるってことか

a = {};
a[function(){return 10;}] = 123;
console.dir(a);

Object
function (){return 10;}: 123
__proto__: Object <> Name_Not_Found<>sage<>2013/10/05(土) 15:47:07.91 ID:???<> >>750のようなまともな解答者がいる一方
見当違いな珍解答をする輩もいて面白いな、このスレ
俺も何か質問してみるか <> Name_Not_Found<>sage<>2013/10/05(土) 15:51:11.69 ID:???<> null,true,false,undefinedも使えるな
変数名には無理だが
普段意識する事はなかったが、まぁトリビア的な意味で勉強になった

var obj = {};
try {
obj[undefined] = 'undefined';
obj[null] = 'null';
obj[true] = 'true';
obj[false] = 'false';
obj[/regexo/g] = 'RegExp';
obj[' '] = 'space';
obj[' '] = '空白';
} catch (err) {
alert(err.message);
}
console.log(obj); <> Name_Not_Found<>sage<>2013/10/05(土) 15:55:45.15 ID:???<> 関数使えるのうそや
これ文字列に変換されてキーになってるな
nullもたぶん

a={};
a[function(){return 10;}] = 123;
a[null] = 456;
Object.keys(a) // => ["function (){return 10;}", "null"] <> Name_Not_Found<>sage<>2013/10/05(土) 15:58:09.98 ID:???<> いや、使える=文字列に変換されるって意味だろこの場合。。。 <> Name_Not_Found<>sage<>2013/10/05(土) 16:04:32.74 ID:???<> キーとして使えるっていうにはobj["null"]とobj[null]が区別されないとね <> Name_Not_Found<>sage<>2013/10/05(土) 16:05:19.69 ID:???<> >>766
その意図だとa[function(){}]とa[function(){}]は永遠にイコールになることはないぞ。
文字列に変換するからこそ使えるわけで <> Name_Not_Found<>sage<>2013/10/05(土) 16:07:28.49 ID:???<> >>768
は?何言ってんだお前・・・ <> Name_Not_Found<>sage<>2013/10/05(土) 16:08:47.73 ID:???<> >>769
実際はイコールになるから、関数オブジェクトがキーになってるわけじゃなくて
文字列に変換されてキーになってるってことを言ってるんじゃないの? <> Name_Not_Found<>sage<>2013/10/05(土) 16:09:57.26 ID:???<> 単にtoString()されて使われてるだけだろ
はい論破 <> Name_Not_Found<>sage<>2013/10/05(土) 16:15:09.43 ID:???<> >>772
>単にtoString()されて使われてるだけだろ

null や undefined はtoString()できませんが?

また完全勝利してしまった・・・
敗北を知りたい <> Name_Not_Found<>sage<>2013/10/05(土) 16:18:57.22 ID:???<> ワロタw <> Name_Not_Found<>sage<>2013/10/05(土) 16:32:07.22 ID:???<> ハッシュは何故速いのですか? <> Name_Not_Found<>sage<>2013/10/05(土) 16:33:21.24 ID:???<> >キーとして使えるっていうにはobj["null"]とobj[null]が区別されないとね

???
区別されるわけねーじゃん <> Name_Not_Found<>sage<>2013/10/05(土) 16:36:05.02 ID:???<> 区別されねえから、実際にキーとして使われるのはnullじゃなくて文字列に変換された"null"だろうって意味だ <> Name_Not_Found<>sage<>2013/10/05(土) 16:37:51.10 ID:???<> toString()じゃなくて、+"" と同じ変換か
これどっか仕様に載ってる? <> Name_Not_Found<><>2013/10/05(土) 16:44:30.02 ID:5DXO+IAv<> ファイルの連結や諸々の処理にAntを使ってみようと思って試してるんだけど
Windowsのコマンドラインで触ってる現状、
タスク実行でUTF8のソースファイルがSJIS(CP932=Javaのデフォルト文字コード)で読み込まれるらしく
日本語(の一部)が文字化けしてしまう。
AntからJavaのVMに渡るように文字コード指定するにはどうすれば?? <> Name_Not_Found<>sage<>2013/10/05(土) 16:53:08.49 ID:???<> 一度だけ言う
スレタイ嫁 <> Name_Not_Found<>sage<>2013/10/05(土) 16:57:15.21 ID:???<> >>779
スレチ
IDE使ってるならそこで設定できるんじゃね?
あと、俺の環境ではbatファイル(utf8)からの実行でもちゃんとutf8で読み込まれて問題ない <> Name_Not_Found<>sage<>2013/10/05(土) 17:11:39.93 ID:???<> >>491
console.timeで測定できました
ありがとうございました <> Name_Not_Found<>sage<>2013/10/05(土) 17:15:59.41 ID:???<> my $sock=IO::Socket::SSL->new(
PeerAddr=>'example.com',
PeerPort=>'110',
Proto=>'tcp',
Timeout=>20,
);

print $sock 'Hello';

これをjavascriptでやりたいんですけど
接続させる方法あってありますか? <> Name_Not_Found<>sage<>2013/10/05(土) 17:24:27.45 ID:???<> node.jsなら可 <> Name_Not_Found<>sage<>2013/10/05(土) 17:25:19.62 ID:???<> ブラウザのJSは任意のホストとのコネクションは張れん
やるにはクロスドメインの設定が必要になる
サーバ側にも設定が必要 <> Name_Not_Found<>sage<>2013/10/05(土) 17:32:51.34 ID:???<> >>778

12.1.5 Object Initialiser
PropertyName :
LiteralPropertyName
ComputedPropertyName

12.1.5.6 Runtime Semantics: Evaluation
ComputedPropertyName : [ AssignmentExpression ]
・AssignmentExpressionを評価してToPropertyKeyにかける

7.1.10 ToPropertyKey
・タイプがSymbolでなかったらToStringにかける

7.1.8 ToString
Undefined → "undefined"
Null → "null"
......
Object →
・ToPrimitiveにStringヒントを与えて呼び出す
・返り値を再びToStringにかける

7.1.1 ToPrimitive
Stringヒントが渡されて呼ばれた場合 →
・まず"toString"メソッドを試して成功すればそれを返して終わる
・次に"valueOf"メソッドを試して成功すればそれを返して終わる <> Name_Not_Found<>sage<>2013/10/05(土) 17:39:43.70 ID:???<> >>784-785
私もnode.jsのsocket.ioだと思ったのですが
送信したり受信したりを非同期で行いたいのですが
どのように実装すればいいのでしょうか?

var socket = io.connect('example.com', {port: 110})
それでasyncってのを使うと思うのですが教えてください <> Name_Not_Found<>sage<>2013/10/05(土) 17:42:02.49 ID:???<> バカ
socket.ioはWebSocketであってTCPSocketじゃねえよ <> Name_Not_Found<>sage<>2013/10/05(土) 17:43:02.67 ID:???<> >>786
7.1.8 ToString
Undefined → "undefined"
Null → "null"

やっぱりundefinedやnullもtoStringされてるんじゃん
ブラウザの挙動だけでは本質は見えないんだよはい論破 <> Name_Not_Found<>sage<>2013/10/05(土) 17:43:14.70 ID:???<> でもWebSocketはTCPSocketだよ。 <> Name_Not_Found<>sage<>2013/10/05(土) 17:44:48.79 ID:???<> >>788
そうですか・・・
これを解決するためにはどんなものを使えばいいのでしょうか? <> Name_Not_Found<>sage<>2013/10/05(土) 17:46:33.64 ID:???<> いやWebSocketとTCPはレイヤーが違う
通常TCPってだけだし
もう一度言うがそもそもレイヤーが違う
再度言うがレイヤーが違うんだから比較することがおかしい
転がるタイヤと車を比較してるようなもの <> Name_Not_Found<>sage<>2013/10/05(土) 17:47:12.94 ID:???<> >>789
undefinedやnullは
文字列化されてるだけであって
toStringは呼び出されてないよ。 <> Name_Not_Found<>sage<>2013/10/05(土) 17:49:28.84 ID:???<> >>791
何がしたいのか具体的に。
まず、Node.jsなのかブラウザ上の話なのかわからん。
クライアントークライアント
クライアントーサーバー
サーバーーサーバー
のどれ?
具体的にどんなことがしたいの? <> Name_Not_Found<>sage<>2013/10/05(土) 17:50:15.98 ID:???<> >>789>>793

789ダッセーwwww <> Name_Not_Found<>sage<>2013/10/05(土) 17:51:16.13 ID:???<> >>786
ありがとう、参考になったw
でもES3にもES5.1にも7.1.8とか見当たらんと思ったら、これES6なのね
ES5.1だとここだった
9.1 ToPrimitive
9.8 ToString

>>789
ネタでやってるんだろうけど、それはtoString()メソッドと違うw <> Name_Not_Found<>sage<>2013/10/05(土) 17:53:46.52 ID:???<> 文字列化されているということは実質的にtoString()されていると言えますが?はい論破 <> Name_Not_Found<>sage<>2013/10/05(土) 17:55:22.88 ID:???<> toStringメソッドとToString内部メソッドは違います <> Name_Not_Found<>sage<>2013/10/05(土) 18:00:16.78 ID:???<> toString()されて使われてるだけだろ
と述べただけでObject.toString()とは言っていない

>null や undefined はtoString()できませんが?
この答えは一つ。出来る。なぜならそうなっているから。
はい論破。 <> Name_Not_Found<>sage<>2013/10/05(土) 18:02:48.02 ID:???<> そもそも、nullやundefined
そして数値などの非オブジェクト型には
toStringメソッドは存在しない。 <> Name_Not_Found<>sage<>2013/10/05(土) 18:07:17.03 ID:???<> null や undefined はtoString()できません
何故ならToObjectでエラーになるから
ToObject
Undefined → Throw a TypeError exception.
Null → Throw a TypeError exception. <> Name_Not_Found<>sage<>2013/10/05(土) 20:38:18.65 ID:???<> なんか皆さんtoString()にこだわってるけど String(x) でいいんでしょ? <> Name_Not_Found<>sage<>2013/10/05(土) 20:54:53.70 ID:???<> >>802
>>747,>>772
こういう話

ちなみにMapやSetを使えばnullやオブジェクトもキーとして使えるよ
+0と-0も区別される <> Name_Not_Found<>sage<>2013/10/05(土) 20:58:07.29 ID:???<> オブジェクトのプロパティの文字列への変換に使う抽象操作ToString()と
関数String()とは1点だけ違いがある <> Name_Not_Found<>sage<>2013/10/05(土) 20:59:29.33 ID:???<> まずStringを挙げる時点で話の眼点がズレてる。 <> Name_Not_Found<>sage<>2013/10/05(土) 22:55:56.82 ID:???<> DOMツリーが複雑になると動作が重くなるのでこまめに削除・生成をしているのですが
作成する要素が増えると作成時の微妙な遅延が気になってきました
DOMツリーにappendしない状態のままの要素を大量に作ってもやはり重くなりますか? <> Name_Not_Found<>sage<>2013/10/05(土) 23:00:18.81 ID:???<> そりゃあ数に比例するだろ <> Name_Not_Found<>sage<>2013/10/05(土) 23:07:37.97 ID:???<> フェードイン・アウトの間に作成したりと高速化の努力をしたのですが
それでも微妙に気になるようになってきたんです
どこにも繋がっていないDOMにキャッシュできたらいいのですが・・ <> Name_Not_Found<>sage<>2013/10/05(土) 23:10:50.44 ID:???<> >>803
mapって何ですか?
array.mapのことじゃないですよね <> Name_Not_Found<>sage<>2013/10/05(土) 23:25:44.10 ID:???<> Map、Setコンストラクタのこと <> Name_Not_Found<>sage<>2013/10/05(土) 23:35:20.43 ID:???<> MapとかSetとか現時点で標準で有効になってるブラウザはFirefoxぐらいだろ <> Name_Not_Found<>sage<>2013/10/05(土) 23:39:30.37 ID:???<> V8は対応してるからChromeならchrome:flags、Nodeなら--harmonyで使える
イテレータブルじゃないのがかなりネックだけど基本機能はある
特にWeakMap、WeakSetはエミュレート不可だから重宝する <> Name_Not_Found<>sage<>2013/10/05(土) 23:40:19.76 ID:???<> 標準厨は絶滅してください
世の中は広いんです <> Name_Not_Found<>sage<>2013/10/05(土) 23:46:19.92 ID:???<> IEは多分12くらいになるんだろうな……
で、13でようやくES6完全対応と <> Name_Not_Found<>sage<>2013/10/06(日) 00:12:21.26 ID:???<> ieもchromeみたいに自動アップデートにしたらいいのに
ふるくせーな <> Name_Not_Found<>sage<>2013/10/06(日) 00:30:05.72 ID:???<> IE7からWindows Updateでメジャーアップデートされるようになったじゃん。 <> Name_Not_Found<>sage<>2013/10/06(日) 00:52:49.55 ID:???<> テストしたところ、DOMツリーに追加しない要素は大量に作ってもパフォーマンスへの影響は小さいようでした <> Name_Not_Found<>sage<>2013/10/06(日) 00:53:57.73 ID:???<> XPで8、Vistaで9、7,8で10は保証されてるはずなんだよなあ <> Name_Not_Found<>sage<>2013/10/06(日) 00:55:51.27 ID:???<> ここは真剣に困った人が来る場所なの
パフォーマンス厨はお呼びでない <> Name_Not_Found<>sage<>2013/10/06(日) 00:57:36.12 ID:???<> ???
パフォーマンスで困ってるんですが? <> Name_Not_Found<>sage<>2013/10/06(日) 01:02:48.02 ID:???<> 質問内容を見れば
単なるパフォーマンスマニアじゃないことは明らかだと思うのですが・・ <> Name_Not_Found<>sage<>2013/10/06(日) 01:05:30.93 ID:???<> 分かるよ、分かる。
かまってちゃんだよね。 <> Name_Not_Found<>sage<>2013/10/06(日) 01:07:23.08 ID:???<> 質問内容を見れば構ってちゃんなどではないことは明らかですが? <> Name_Not_Found<>sage<>2013/10/06(日) 01:10:52.26 ID:???<> removeChildはoldChildを返すようになっています
ということはやはり
便宜ツリーから切り離して再利用するのが定石なのでしょうか <> Name_Not_Found<>sage<>2013/10/06(日) 01:18:27.03 ID:???<> ・・・とか。。。とか???とかよく使う奴にろくな奴はいねえな
このスレだとかまってちゃんと罵ってくる奴がよく使うんだよね <> Name_Not_Found<>sage<>2013/10/06(日) 01:32:01.32 ID:???<> 人の足を引っ張るだけが趣味のクズよりマシだと思いますが・・ <> Name_Not_Found<>sage<>2013/10/06(日) 03:17:47.00 ID:???<> 処理をタイマーで定期的に分割実行するにはどうしたらいいですか?
たとえば実行に時間のかかるループを、
指定した実行時間で分割しながら少しずつ実行する、など <> Name_Not_Found<>sage<>2013/10/06(日) 03:30:21.94 ID:???<> JavaScriptのタイマー割り込みは、
タイマー割り込み処理中には発生しないのでしょうか? <> Name_Not_Found<>sage<>2013/10/06(日) 03:36:48.55 ID:???<> しない
setImmediateで回すと楽
Workerを使うのも賢い
ぶつ切りにするのは調整が面倒だからオススメしない <> Name_Not_Found<>sage<>2013/10/06(日) 03:41:57.26 ID:???<> workerですか
使ったことないのでどんなものか分からないですが調べてみます
ありがとうござました <> Name_Not_Found<>sage<>2013/10/06(日) 04:20:20.86 ID:???<> Workerも知らないパフォーマンス厨には流石に苦笑 <> Name_Not_Found<>sage<>2013/10/06(日) 04:28:34.24 ID:???<> もちろん知ってはいますよ
ただ互換性の点で「今は使わない機能」に分類して調べなかったということです
今調べたらDOMにはアクセスできないのですね
したいのは遅延描画なので違うかなぁ
少し前に知ったのですが
http://polygonplanet.github.io/Pot.js/#manualsub.overview.whats.Pot.js
これがヒントになるかもしれません <> Name_Not_Found<>sage<>2013/10/06(日) 04:41:55.59 ID:???<> 障害のある方かな <> Name_Not_Found<>sage<>2013/10/06(日) 04:49:45.05 ID:???<> ? <> Name_Not_Found<>sage<>2013/10/06(日) 05:12:41.30 ID:???<> DOMにはアクセスできない事すら知らないで
知ってたとかもうねw <> Name_Not_Found<>sage<>2013/10/06(日) 05:27:29.13 ID:???<> すぐには使わないものを調べないのはごく普通のことですが?
ネットで5分程度で分かるようなものなのだから
さらっとした輪郭だけ知っておけばそれでいいのですよ
低能な人ほどネットで5分程度で得られる単なる知識を誇りたがるから困ったものです <> Name_Not_Found<>sage<>2013/10/06(日) 05:51:17.05 ID:???<> 自分から知ってるとか言い出したくせに支離滅裂だな(笑) <> Name_Not_Found<>sage<>2013/10/06(日) 06:04:56.63 ID:???<> 知ってるって言ったら、
完璧に知ってるのが普通ですよ。
俺、JavaScript知ってるしwww <> Name_Not_Found<>sage<>2013/10/06(日) 06:11:56.67 ID:???<> 「知っている」にそんな意味はありません <> Name_Not_Found<>sage<>2013/10/06(日) 06:24:24.34 ID:???<> 存在を知ってるだけで知ってることになるとは何たる暴言…… <> Name_Not_Found<>sage<>2013/10/06(日) 07:52:38.51 ID:???<> JavaScriptと直接関係ないかもしれませんが、Cometに挑戦しています。

Cometの実装方法についてなんですが、XMLHttpRequestをサーバに飛ばした後、
サーバはリクエストを確保(無限ループ)しておいて、
リクエストを返せる状態になったら返し、
返すものがなくても、ブラウザやサーバのタイムアウトを考慮して、
一定期間経ったら無限ループを終了して返す。
といった具合でいいのでしょうか?

Ajaxと同じ手順で実装して、サーバだけ変えてみたのですが、
ローディング中みたいなブラウザのクルクル表示(時計表示)がずっと回ってるんですが、
Cometを謳っているチャットを見るとそのようにはなっていません。
何が駄目なのか分かる方いますでしょうか? <> Name_Not_Found<>sage<>2013/10/06(日) 08:33:33.35 ID:???<> まずはwebに乗ってるサンプルコードで試してみたら?
やろうとしてる事はそれであってると思うが、それだけじゃ分からない <> Name_Not_Found<>sage<>2013/10/06(日) 08:35:18.53 ID:???<> あ、サーバー変えてるならクロスドメインの制限に引っかかってるんじゃないかな? <> 841<>sage<>2013/10/06(日) 09:56:12.02 ID:???<> 憶測しかできない解答はいりません。
黙っててください。 <> Name_Not_Found<>sage<>2013/10/06(日) 10:20:40.02 ID:???<> よっしじゃあみんなで憶測しようぜーw <> Name_Not_Found<>sage<>2013/10/06(日) 10:21:46.17 ID:???<> やり方が根本的に間違ってる <> Name_Not_Found<>sage<>2013/10/06(日) 10:28:53.39 ID:???<> そもそもクルクル表示以外の問題点、
一番肝心なサーバからのレスポンスを受け取れてるかどうかを書いてないとか <> Name_Not_Found<>sage<>2013/10/06(日) 10:32:13.91 ID:???<> 駄目な理由はわかるけど教えたくない <> 841<>sage<>2013/10/06(日) 11:21:11.29 ID:???<> 皆さんレスありがとうございました。
原因は単純なところにありました。
XMLHttpRequestのopenメソッドの第三引数にfalseを指定して同期にしていたせいでした。

後分かるとは思いますが>>844は偽物なのでスルーお願いします。 <> Name_Not_Found<>sage<>2013/10/06(日) 11:28:46.53 ID:???<> ID出さないのなら >>841 = >>844 = >>849 の前提でスレは進行します <> Name_Not_Found<>sage<>2013/10/06(日) 11:31:15.13 ID:???<> コードも出さずに、エスパーさせておいて、挙句の果てには自己解決
何がしたかったの?二度とくんな <> Name_Not_Found<>sage<>2013/10/06(日) 11:53:45.20 ID:???<> 別にID強制スレじゃないし偽物とかたち悪いだけ
偽物ごっこやりたきゃPHPスレに帰れよ <> Name_Not_Found<>sage<>2013/10/06(日) 12:09:10.79 ID:???<> 質問 → 回答者を煽る書き込み → 自己解決しました

何回目だと思ってるんだ?
もう偽者じゃないし、わざとやって遊んでるとしか思えない <> Name_Not_Found<>sage<>2013/10/06(日) 12:19:11.62 ID:???<> お前がそれを見るのは何回目かもしれないが
(暇なの? 粘着してるの?)

質問者はそれぞれ別の人だ。

それぐらい気づけよw <> Name_Not_Found<>sage<>2013/10/06(日) 12:19:21.27 ID:???<> >>849
ID出せばいいのに
君の書き込みはもうみんな一目でわかるからID出すことのリスクなんて無いよ?
ID出しても出さなくても、こいつ延々と質問だけする糞野郎だって評価は変わらない
ID出しとけば、ID無しは(たとえそれが本人の書き込みだとしても!)偽者ということにできる
ID出すことは君にとって利点しか無い <> Name_Not_Found<>sage<>2013/10/06(日) 12:36:43.92 ID:???<> 何か勘違いされてるみたいですが849は俺じゃないですよ?
質問者は一人じゃないです
文体の違いを感じて頂けると幸いです <> Name_Not_Found<>sage<>2013/10/06(日) 12:47:02.59 ID:???<> やはりWeb系はどこへいっても低レベルだな <> Name_Not_Found<>sage<>2013/10/06(日) 12:50:22.33 ID:???<> そもそも質問回答するのに同一人物判定なんてする必要もないので
そんな判定はしないのが一番いいかな? <> Name_Not_Found<>sage<>2013/10/06(日) 12:59:43.30 ID:???<> >>856
自分が>>853のを繰り返してるって自覚はあるんだ <> Name_Not_Found<>sage<>2013/10/06(日) 13:03:31.61 ID:???<> だからさもう次スレは質問用限定にするなよ <> Name_Not_Found<>sage<>2013/10/06(日) 13:06:39.84 ID:???<> >>854
おれは>>849がいつもの「〜の件ですが・・・」の彼だと思ったわw
なんで別人だって断定できた? <> Name_Not_Found<>sage<>2013/10/06(日) 13:07:39.54 ID:???<> >>861
そいつが本人だからさ <> Name_Not_Found<>sage<>2013/10/06(日) 13:12:17.93 ID:???<> 自己解決した時に結果を書けば
質問打ち切りも宣言できるし他の人の参考にもなる
何がまずいのか分からんな <> 841 849<>sage<>2013/10/06(日) 13:19:09.06 ID:???<> なんかスレ荒れてすみませんでした。
コード貼ろうか迷ったのですが、原因になる場所のコードがわからなくて、
サーバ側も載せるとなると2.3レスは使っちゃいそうな勢いだったので自重しました。
エスパー質問になってすみませんでした。
次からは気をつけます。 <> Name_Not_Found<>sage<>2013/10/06(日) 13:31:54.93 ID:???<> とにかくfirebugとかすいうのから変数の値を書き換えられない方法をおしえて
あと変数が書き換えられたらそれを検知できる方法もおしえて <> Name_Not_Found<>sage<>2013/10/06(日) 13:44:02.04 ID:???<> ブラウザ上で動くんだからそんなのないよ <> Name_Not_Found<><>2013/10/06(日) 13:56:03.96 ID:oFv6xwXl<> 0で始まる6桁のランダムの数字を出したく下記を実行すると
("0" + Math.floor(Math.random()*100000)).substr(-6, 6)
次のようにたまに5桁以下のものが混じってしまいます。
【実行結果】
031127
017210
047001
052098
09925 ←たまに5桁
042524

これを必ず6桁で表示させるにはどのようにしたらよいでしょうか? <> Name_Not_Found<>sage<>2013/10/06(日) 14:01:40.31 ID:???<> そんなの当たり前じゃんw
数字一つ一つ乱数で作らないと <> Name_Not_Found<>sage<>2013/10/06(日) 14:06:02.72 ID:???<> >>867
望みの桁数-1桁の"0"を加えなきゃ駄目じゃん。 <> Name_Not_Found<>sage<>2013/10/06(日) 14:07:07.63 ID:???<> 君さあ、それ5桁しか見つけてないみたいだけど4桁とか3桁も出てくるのは理解してる?
ゼロフィルとか桁揃えでググればいくらでも出ると思うけど
("00000" + Math.floor(Math.random()*100000)).slice(-6);
でいいんじゃない <> Name_Not_Found<>sage<>2013/10/06(日) 14:24:04.41 ID:???<> n = 5; //桁
s = ("" + Math.pow(10,n+1) + Math.floor(Math.random()*Math.pow(10,n+1))).slice(-n);
d = "0" + s <> Name_Not_Found<><>2013/10/06(日) 14:25:11.27 ID:iD8QLYOM<> Fooを継承してBarをつくるとき
Bar.prototype = new Foo();
ってやるけど、どういう内部動作があってこれが成立するか説明できる人いますか?
prototypeはObjectなのにfooインスタンスを渡してうまくいくからには
式が実行された裏で何かが行われてると思うんだけど・・・
__proto__っていうのが関わってるらしきことはわかるものの整理がつかないびっち <> Name_Not_Found<>sage<>2013/10/06(日) 14:48:24.97 ID:???<> インスタンスもオブジェクトじゃん
何いってんの
そんなことnew Fooで帰ってくるオブジェクト見れば分かることでしょ
自分で何もしないで人任せにするのはNG <> Name_Not_Found<><>2013/10/06(日) 15:00:00.60 ID:iD8QLYOM<> インスタンスもObject?
consoleで表示するとそんな表記にはなってるけど
そのものとは思わなかったー

けどそうなると別の疑問が生じてくるけど
function Foo(name) { this.name = name; }
var foo = new Foo("taro");
としたとき、fooが{name:"taro"}だとして
Bar.prototype = {name:"taro"};
と同じではなくないですか?
これではインスタンスのプロパティnameもBarのprototypeになってしまう <> Name_Not_Found<><>2013/10/06(日) 15:03:08.05 ID:iD8QLYOM<> ん、違うな、これでは堂々めぐりだ、前に考えたことといっしょだ。
ごめん、やっぱしわからない・・・ <> Name_Not_Found<><>2013/10/06(日) 15:18:19.08 ID:iD8QLYOM<> Bar.protptypeへの代入式を分解して
var foo = new Foo();
Bar.prototype = foo;

(仮説)2行目の式は内部で↓に変換される
B.prototype = foo.__proto__;

これが現在の俺の限界 <> Name_Not_Found<>sage<>2013/10/06(日) 15:18:38.00 ID:???<> >これではインスタンスのプロパティnameもBarのprototypeになってしまう
実際そうなる <> Name_Not_Found<>sage<>2013/10/06(日) 15:20:09.91 ID:???<> BarのプロトタイプにFooのインスタンスを指定すれば
BarはFooの持つメソッドが使えるようになる、という結果的な継承で
正統的なやり方じゃないよ <> Name_Not_Found<>sage<>2013/10/06(日) 15:22:37.95 ID:???<> >>876
ここで説明できる事には限るがあるし1回で理解できるようなものでもないから
まずはnewされた時の振る舞いについてググるんだな
全てがよくまとまっているのはこれ
http://www.slideshare.net/yuka2py/javascript-23768378 <> Name_Not_Found<>sage<>2013/10/06(日) 15:29:16.31 ID:???<> 「Fooプロトタイプを継承させたプロトタイプ」が入るべきところに
Fooインスタンスが入っているってことは、プロトタイプチェーンも伸びてるのかな? <> Name_Not_Found<>sage<>2013/10/06(日) 15:33:04.56 ID:???<> firefoxの標準デバッガってdebuggerステートメントが効かないんですか?
なんか止まらないんですが・・ <> Name_Not_Found<>sage<>2013/10/06(日) 15:36:04.72 ID:???<> FooインスタンスfooはFoo.prototypeをプロトタイプとしてるんだから
fooをBoo.prototypeに入れるってことは
Boo.prototype.__proto__ == Foo.prototypeとなって
Booインスタンスbooでは
boo.__proto__ == Boo.prototype
boo.__proto__.__proto__ == Foo.prototypeとなって
プロトタイプチェーンは伸びる <> Name_Not_Found<>sage<>2013/10/06(日) 15:41:33.82 ID:???<> new Object()は { __proto__: Object.prototype }
Object.prototype === new Object().__proto__

Foo コンストラクタ定義 Foo = function(){}
デフォルトで Foo.prototype = new Object() みたいなのが設定されてる
なのでこうなる
Foo.prototype.__proto__ === Object.prototype
Foo.prototype.__proto__ === new Object().__proto__

new Foo() は { __proto__ : { __proto__: Object.prototype } }
Foo.prototype === new Foo().__proto__
Object.prototype === new Foo().__proto__.__proto__

Bar コンストラクタ定義 Bar = function(){}
Bar.prototype置き換え Bar.prototype = new Foo()
その結果こうなる
Bar.prototype.__proto__ === Foo.prototype
Bar.prototype.__proto__.__proto__ === new Object().__proto__

new Bar() は { __proto__ : { __proto__ : { __proto__: Object.prototype } } }
Bar.prototype === new Bar().__proto__
Foo.prototype === new Bar().__proto__.__proto__
Object.prototype === new Bar().__proto__.__proto__.__proto__ <> Name_Not_Found<>sage<>2013/10/06(日) 15:49:06.56 ID:???<> なんでコンストラクタだけプロトタイプから飛び出てるの? <> Name_Not_Found<>sage<>2013/10/06(日) 15:51:19.45 ID:???<> コンストラクタ内のthisはその関数のprototypeプロパティをプロトタイプとしたオブジェクト
コンストラクタは最後にthisを返す
つまりBoo.prototype = new Foo()は
Foo.prototypeプロパティをプロトタイプとしたオブジェクトを
Boo.prototypeプロパティにセットしてる
だいたいこう

まあ今じゃObject.createやら__proto__やらあるからこの方法を使う必要はない
欠陥があるしね
一番いいのはclassでextendsすること、これに勝るものはない <> Name_Not_Found<>sage<>2013/10/06(日) 15:53:16.97 ID:???<> 関数が作られた時そのprototypeプロパティに自動的に
{constructor: 自分自身の関数}がセットされると思えばOK <> Name_Not_Found<>sage<>2013/10/06(日) 16:01:08.43 ID:???<> Fooコンストラクタで生成されたFooインスタンスのプロパティまで継承されるよね?
それが気持ち悪い
○と△を無理矢理繋げたみたいな感じ <> Name_Not_Found<>sage<>2013/10/06(日) 16:01:14.25 ID:???<> >>886
コンストラクタ = 関数を作ると、
関数オブジェクトのプロパティとして prototype が自動的に作られて、
さらに prototype.consructor は自分自身に、prototype.__proto__ はObject.prototypeに、自動的に設定される
かな? <> Name_Not_Found<>sage<>2013/10/06(日) 16:05:34.67 ID:???<> function Hoge(){
this.moge = 'poge';
}
function Moge(){
}
Moge.prototype = new Hoge();
var a = new Moge();
console.log(a.moge);

こんなの絶対おかしいよ <> Name_Not_Found<>sage<>2013/10/06(日) 16:06:43.65 ID:???<> だからprototypeにインスタンスを入れるやつはセンスない
はい論破 <> Name_Not_Found<>sage<>2013/10/06(日) 16:07:55.88 ID:???<> prototypeは普通のobject、普通のobjectは全てObjectのインスタンスなんだから
prototype.__proto__がObject.prototypeになるのは当たり前
a = {}
a.__proto__ == Object.prototype <> Name_Not_Found<>sage<>2013/10/06(日) 16:13:17.87 ID:???<> jquery.stylesheetを使ってCSSを書き換えていたのですが
CDNから読み込んだCSSはクロスドメインと判定されて書き換えられないとエラーが出ました
(ただしchromeではスルー)
CSSを書き換えるのはあまりいい方法ではないのでしょうか <> 872<><>2013/10/06(日) 16:14:57.67 ID:iD8QLYOM<> よくわかりました。
Bar.prototype = new Foo();
の中に
Bar.prototype.__proto__ = foo.__proto__:
も含まれているので、__proto__を辿ってメソッド等を参照でき
結果として継承関係が成立するということですね。

>>879のスライド見て、他にもいろんな説明をいただきましたが、
今はどれもよくわかる。ありがとうございました <> Name_Not_Found<>sage<>2013/10/06(日) 17:04:49.93 ID:???<> >>892
この件ですが、
css = document.createElement('style');
css.innerText = 'body{background-color:#000}';
document.getElementsByTagName('head')[0].appendChild(css);

みたいな感じに動的にstyleタグを生成して設定を上書きすることにしようかと思うのですが
このやり方で問題ないでしょうか? <> Name_Not_Found<>sage<>2013/10/06(日) 17:07:23.37 ID:???<> document.body.style.backgroundColor="#000"
でええやん <> Name_Not_Found<>sage<>2013/10/06(日) 17:11:55.10 ID:???<> これは例が悪かったです
実際にしたいのはクラス設定の変更です <> Name_Not_Found<>sage<>2013/10/06(日) 17:43:20.12 ID:???<> 問題ないよ <> Name_Not_Found<>sage<>2013/10/06(日) 17:51:01.22 ID:???<> おまえらみたいな仕事でコード書いてないクズが議論してもなんも生まれない <> Name_Not_Found<>sage<>2013/10/06(日) 18:22:11.73 ID:???<> 仕事してようがしてまいが書いたコードでwebを動かせば同じ <> Name_Not_Found<>sage<>2013/10/06(日) 18:32:11.44 ID:???<> つうか動かしてみれば分かるじゃん
結局は動かしてみないと分かんないんだし
そうじゃね? <> Name_Not_Found<>sage<>2013/10/06(日) 18:40:07.92 ID:???<> cssTextで一度に設定できるのはchromeだけで
汎用的にするには、
一つずつcss.sheet.insertRuleしないといけないようです
セレクタを指定して削除したり置換する時はどうしたらいいのでしょうか? <> Name_Not_Found<>sage<>2013/10/06(日) 19:04:22.21 ID:???<> 後から書いたものが有効になるから削除する必要はない <> Name_Not_Found<>sage<>2013/10/06(日) 19:14:29.99 ID:???<> それだと変更するたびにCSSがどんどん伸びていくのでは <> Name_Not_Found<>sage<>2013/10/06(日) 19:26:09.22 ID:???<> >>901
cssTextのサンプルくれませんか
あとcss.sheet.insertRuleでひとつづつやるサンプルもください
そうしたら僕の取って置きのやつをcodepadに貼り付けますから <> Name_Not_Found<>sage<>2013/10/06(日) 19:43:27.06 ID:???<> var css = document.createElement('style');
document.getElementsByTagName('head')[0].appendChild(css);
css.sheet.insertRule('body{background-color:#000}',0);

これでどうですか
cssTextは使わない方向で行きます <> Name_Not_Found<>sage<>2013/10/06(日) 19:55:38.23 ID:???<> なんで使わないの?
firefoxでもSafariでもIEでもChromeでも使えるのに <> Name_Not_Found<><>2013/10/06(日) 20:50:38.74 ID:dNwCa4ys<> 正常に動作していたturn.min.jsが、Chromeのバージョンアップ後動作しなくなりました。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12112947382
上記URLでの対処法で解決自体はしました。(turn.jsのほうを読ませる)

が、なぜこのようなことが起こるのか簡単に教えてください。

(turn.min.jsだけでなく、個人的に組んで現在は正常に動作するプログラムまでが
ある日突然動作しなくなるのではと不安になりましたので質問しました。) <> Name_Not_Found<>sage<>2013/10/06(日) 20:59:01.88 ID:???<> >>906
使えない感じだったのですが
css.sheet.cssRules[n].style.cssText
を書き換えることでルール置換出来ました
ありがとうございました <> Name_Not_Found<><>2013/10/06(日) 21:12:42.29 ID:Px6yCcRl<> 次スレッド用テンプレ案
http://jsfiddle.net/fH4cC/25/show/ <> >>2<><>2013/10/06(日) 21:13:18.64 ID:Px6yCcRl<> ■前スレ
+ JavaScript の質問用スレッド vol.109 +
http://toro.2ch.net/test/read.cgi/hp/1379772045/

■過去スレ全集
http://www2.atpages.jp/mirror/2ch/javascript/
http://usamimi.info/~mirrorhenkan/2ch/javascript/ (閲覧のみ)

■テンプレ案
http://jsfiddle.net/fH4cC/25/show/

■関連スレ
ECMAScript デス 4
http://toro.2ch.net/test/read.cgi/tech/1325448978/
【jQuery】JavaScript ライブラリ総合質問所 vol.3
http://toro.2ch.net/test/read.cgi/hp/1369444026/
【WHATWG】HTML5 Part4【W3C HTML WG】
http://toro.2ch.net/test/read.cgi/hp/1329529892/
Webサイト制作初心者用質問スレ part237
http://toro.2ch.net/test/read.cgi/hp/1380819516/
CSS初心者スレッド=12th=
http://toro.2ch.net/test/read.cgi/hp/1343429848/
Canvasについて語ろう
http://toro.2ch.net/test/read.cgi/hp/1305093769/ <> >>4<><>2013/10/06(日) 21:13:51.48 ID:Px6yCcRl<> ■各種仕様 ( http://fiddle.jshell.net/vSqKr/33/show/#Link も参照 )
◆ Standard ECMA-262
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/ (ECMAScript 3 和訳)
http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
http://people.mozilla.org/~jorendorff/es6-draft.html (ECMAScript 6 有志HTML版)
http://kangax.github.io/es5-compat-table/ (ECMAScript 5 compatibility table)
http://kangax.github.io/es5-compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
http://www.whatwg.org/specs/web-apps/current-work/multipage/
http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)
◆ Document Object Model (DOM) / CSS Object Model (CSSOM)
http://www.hcn.zaq.ne.jp/___/WEB/DOM4-ja.html (DOM Standard (DOM4) 和訳)
http://www.w3.org/TR/DOM-Level-3-Events/ (DOM3 Events)
http://www.w3.org/TR/uievents/ (UI Events)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html (CSSOM 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/cssom-view-ja.html (CSSOM View Module 和訳)
◆ その他のWeb関連仕様
http://domparsing.spec.whatwg.org/ (DOM Parsing and Serialization - innerHTML等)
http://www.hcn.zaq.ne.jp/___/WEB/XHR-ja.html (XMLHttpRequest 和訳)
http://www.hcn.zaq.ne.jp/___/WEB/File_API-ja.html (File API 和訳)
http://www.whatwg.org/specs/ (WHATWGの仕様一覧)
◆ MDN (Netscape/Mozilla)
https://developer.mozilla.org/ja/docs
◆ JavaScript Garden (ja)
http://bonsaiden.github.com/JavaScript-Garden/ja/
◆ JSON (JavaScript Object Notation)
http://www.json.org/json-ja.html
◆ MSDN Library
http://msdn.microsoft.com/ja-jp/library/yek4tbz0.aspx (JavaScript)
http://msdn.microsoft.com/ja-jp/library/cc427807.aspx (JScript)
http://msdn.microsoft.com/ja-jp/library/cc409712.aspx (DHTML) <> Name_Not_Found<>sage<>2013/10/06(日) 21:46:17.26 ID:???<> ■質問テンプレート
を今風に改善してもらえないか? <> Name_Not_Found<>sage<>2013/10/06(日) 23:05:14.56 ID:???<> ィョゥ! <> Name_Not_Found<>sage<>2013/10/06(日) 23:22:14.13 ID:???<> css.sheet.cssRules[n].selectorTextのセレクタ名は、表記そのままではなく、
正規化されているようです
.hoge,.fuga
と間を空けずに書いても、
.hoge, .fuga
と,の後ろにスペースが一つ付きます
この正規化の書式は全てのブラウザで同じなのでしょうか? <> Name_Not_Found<>sage<>2013/10/06(日) 23:45:13.29 ID:???<> >>914
>>911のCSSOMに手順が書いてある <> Name_Not_Found<>sage<>2013/10/06(日) 23:45:19.44 ID:???<> マルチセレクタは分けて格納するブラウザもあったりと
調べるほどややこしいので
jquery-stylesheetを見に行ったらfixされてました(∵) <> Name_Not_Found<>sage<>2013/10/06(日) 23:46:25.22 ID:???<> >>915
ありがとうございます <> Name_Not_Found<>sage<>2013/10/06(日) 23:48:18.21 ID:???<> >>907
今正常に動作するプログラムがブラウザのバージョンアップで動かなくなる可能性はつねにある
プログラムが標準仕様だけに従っていれば可能性は低くなるけど、
標準仕様の範囲だけで目的が達成できなければ、標準仕様外のものを使わざるを得ない

そのライブラリについてちらっと調べた限りでは、
タッチパネル動作とマウス動作を切り分ける手段に適当な方法を使っている(いた)感じ <> Name_Not_Found<>sage<>2013/10/06(日) 23:49:54.03 ID:???<> 【JavaScript】下らねぇ質問はID出して書き込みやがれ 110 <> Name_Not_Found<>sage<>2013/10/07(月) 01:18:46.35 ID:???<> 勧告されてない仕様は大いに変わる可能性があることを忘れてはならない <> Name_Not_Found<>sage<>2013/10/07(月) 01:44:15.78 ID:???<> ライブラリも勝手に仕様変わるよね <> Name_Not_Found<>sage<>2013/10/07(月) 01:59:48.67 ID:???<> ライブラリは好きなバージョン選べるやん <> Name_Not_Found<>sage<>2013/10/07(月) 03:43:30.68 ID:???<> scrollHeightですが、
chromeとIEではpaddingとの合計、
firefoxではpaddingを除いたものを返してくるようです
ブラウザ名のチェックではなく
ダック・タイピング的にどちらのパターンかを判別するにはどうしたらいいでしょうか <> Name_Not_Found<>sage<>2013/10/07(月) 04:10:11.39 ID:???<> パターンも何もpaddingを含むのが仕様
それ以外は気にしなくていい
嫌ならclientHeightやoffsetHeightを使う <> Name_Not_Found<>sage<>2013/10/07(月) 04:24:17.29 ID:???<> >>923
ダックタイピングをどういう意味で使ってるのか分からんが
ちょっとでももとの意味を理解してるのなら判別という言葉とくっつくことは無いはず
オレオレ用語はよしてくれや <> Name_Not_Found<>sage<>2013/10/07(月) 04:25:12.37 ID:???<> じゃあfirefoxが間違ってるんですね
scrollHeight < offsetHeight
なら含まないと判定することにしました
ありがとうございました <> Name_Not_Found<>sage<>2013/10/07(月) 04:32:08.97 ID:???<> >>925

ここまで学習したように、オブジェクトのクラスを判定する方法は、
少なくともクライアントサイドJavaScript においては、どれも問題があります。
もう 1 つ解決方法があります。それは、この問題はとりあえず放っておくことです。
「このオブジェクトのクラスは何か」を調べるのではなく、
「このオブジェクトは何ができるのか」を調べます。
JavaScript プログラマの場合は、この表現は次のような意味になります。
「オブジェクトが Duck のように歩き、 Duck のように泳ぎ、
Duck のように鳴けば、そのオブジェクトを Duck として扱えます。
たとえ、 そのオブジェクトが Duck クラスのプロトタイプオブジェクトを継承していなかったとしても、です」 。
(オライリー「JavaScript第六版」)

「判別という言葉とくっつくことがない」などと言っているあなたの方が恐らく間違っているようです <> Name_Not_Found<>sage<>2013/10/07(月) 04:35:06.61 ID:???<> そのバグは去年治っただろ <> Name_Not_Found<>sage<>2013/10/07(月) 04:37:43.86 ID:???<> 最新のfirefox24で実際にそうなっていますが? <> Name_Not_Found<>sage<>2013/10/07(月) 04:40:38.32 ID:???<> >>927
俺のほうがとかはいいよ
その文章も当然知ってるし
でも今は俺がお前さんに注意してるんだから
素直にいう事聞いとき <> Name_Not_Found<>sage<>2013/10/07(月) 04:40:53.00 ID:???<> >>929
ここの記述と異なった挙動になっちゃってるってこと?
https://developer.mozilla.org/en-US/docs/Web/API/element.scrollHeight <> Name_Not_Found<>sage<>2013/10/07(月) 04:42:14.67 ID:???<> 世界中のFirefoxの最新が24でそれで100%バグが起こると証明できるのか?
いやwできないwww <> Name_Not_Found<>sage<>2013/10/07(月) 04:47:58.90 ID:???<> 関連バグを見ると一部直したがこれ以上は面倒くさいからしないってさ
https://bugzilla.mozilla.org/show_bug.cgi?id=576976 <> Name_Not_Found<>sage<>2013/10/07(月) 06:20:30.68 ID:???<> そもそもIE独自のものだったもので標準規格じゃないでしょ
いつか無くなるよ
ちなみに皆event.returnValueはもう使うなよ
Chromeではまもなく無くなるから <> Name_Not_Found<>sage<>2013/10/07(月) 06:48:42.21 ID:???<> >>581
非推奨じゃないよ
HTML5の仕様に移行したからWebでは問題なく使える <> Name_Not_Found<>sage<>2013/10/07(月) 09:34:25.75 ID:???<> HTML5の仕様の中にRegExp.$1とか規定されてるんですか。知らなかった。
どの文書ですか? <> Name_Not_Found<>sage<>2013/10/07(月) 13:49:12.49 ID:???<> >>930
いやあなたが何を言ってるのかさっぱり分かりません <> Name_Not_Found<>sage<>2013/10/07(月) 14:01:05.34 ID:???<> >>933
仕様じゃなくてバグだったのですかー <> Name_Not_Found<>sage<>2013/10/07(月) 14:14:51.13 ID:???<> >>937
ダック・タイピングと似たようなアプローチで判別する方法はないか?
ってところまで書けってことだよ。それでもわかりづらいことには変わりないけど

擁護は正しくっていうのは、勝手に派生させないってのも含むよ
プログラム書いてるなら、未定義の用語を濫用することの無意味さはわかるじゃろ? <> Name_Not_Found<>sage<>2013/10/07(月) 14:21:01.21 ID:???<> >>939
ダックタイピング「的」と言っているでしょう
自分の認識が間違っていて、間違った認識の上に立って物言いを付けてきたのだから
反省すべきはあなたなんですよ
狂ってるんですか? <> 939<><>2013/10/07(月) 14:39:39.31 ID:d7N9VSvE<> ごめん、俺は>>925じゃない
お前は「的」とつければ自分の意図が必ず伝わると思い込んでるだけだって話

JS-MLで俺も言葉足らずをよく指摘されたからわかるんだが
回答者は何でもかんでも汲んでくれるわけじゃないんだ
お前のお母さんじゃないんだから <> Name_Not_Found<>sage<>2013/10/07(月) 15:12:36.77 ID:???<> いやまておまえら
ダックタイピングは全く関係無いだろ
ダックタイピング的ですらもない
もしかしてアンサイクロペディアのダックタイピングの記述あたりを信じて、
勝手に言葉の意味拡張して使ってる? <> Name_Not_Found<>sage<>2013/10/07(月) 15:19:07.60 ID:???<> >>942
が正しい

>>936
http://javascript.spec.whatwg.org/#regexp.$n <> Name_Not_Found<>sage<>2013/10/07(月) 15:21:05.37 ID:???<> ああ全然違うものだと思うよ。多分質問者は
scrollHeightで返るものがクライアント毎に変わるから
それを要素などの持つ特徴的な何かで判別できないか、と考えていて
それをダック・タイピング的だと表現した、とエスパーしてみた

アンサイクロペディアのダックタイピングは面白かった <> Name_Not_Found<>sage<>2013/10/07(月) 15:29:47.58 ID:???<> 特徴も何もただの数値じゃんw <> Name_Not_Found<>sage<>2013/10/07(月) 15:47:39.28 ID:???<> ダックタイピングの本質は「あひると同じことが出来るのならあひると扱う」
この一言に集約されるんです
それはますあひるかどうかかの調査から始まる
こんなことは当たり前のことです
アホはアンサイクロペディアでも読んで溜飲を下げていて下さいね <> Name_Not_Found<>sage<>2013/10/07(月) 15:52:25.82 ID:???<> >回答者は何でもかんでも汲んでくれるわけじゃない

って、そんなことを期待していないのは明らかでしょう?
分からない人は黙っていてくれとしか思ってませんよ
「そこ!?」っていうところに噛みついてくるレベルの人には何も期待していないんですよ
ただ単に、黙っててくれ。 <> Name_Not_Found<>sage<>2013/10/07(月) 15:57:56.20 ID:???<> んで結局>>923の言うダック・タイピングは何を指してたわけ? <> Name_Not_Found<>sage<>2013/10/07(月) 16:42:52.47 ID:???<> もういいよ
バカに付き合うとバカになるぞ <> Name_Not_Found<>sage<>2013/10/07(月) 16:46:32.43 ID:???<> >>947
>>1を無視しまくるおまえには他人をどうこう言う権利は無いよ <> Name_Not_Found<>sage<>2013/10/07(月) 17:13:04.62 ID:???<> 親divの中に100個の子divを作り個別にidやstyle.top, leftを指定、更新時には親divごと消す
ということをやってるのですが、どうやらcloneNode〜removeChildよりも
HTMLテキストを繋げてinnerHTMLで上書きする方が倍ほど早いようです
それでもinnerHTMLは使わないべきでしょうか? <> Name_Not_Found<>sage<>2013/10/07(月) 17:18:32.92 ID:???<> innerHTMLより遅いなんてよほど馬鹿なコード書いてるとしか思えん <> Name_Not_Found<>sage<>2013/10/07(月) 17:19:58.29 ID:???<> innerHTMLは遅い
お前の書き方が悪いだけ
http://jsperf.com/jquery-html-vs-empty-vs-innerhtml/9 <> Name_Not_Found<>sage<>2013/10/07(月) 17:24:03.60 ID:???<> >>948
実際の動作によって性質を判定する方法をダックタイピング的と言ったのです
これは今後もJavaScriptにおいても重要な手法となるので覚えておいてくださいね
逆にブラウザ名で判別するのはモダンではない
jQuery.browserがなくなったのも同じ傾向上にあるものです <> Name_Not_Found<>sage<>2013/10/07(月) 17:27:16.08 ID:???<> >>951
innerHTMLの方が速い場合もあるよ
場合によって使い分けるべきで、どちらの方が絶対にいいというもでもない <> Name_Not_Found<>sage<>2013/10/07(月) 17:28:34.62 ID:???<> そりゃ逆だ
物の肩書ではなく持っている性質によって振る舞いが決定される
つまり主導権は物側にあるというのがダックタイピングだ
性質を量るというのはタイプ、つまり型で判定するということで
ダックタイピングとは真逆だぞ <> Name_Not_Found<>sage<>2013/10/07(月) 17:29:02.13 ID:???<> >>954
それをダックタイピング的と呼ぶのは恥ずかしいからやめとけ <> Name_Not_Found<>sage<>2013/10/07(月) 17:35:38.33 ID:???<> >>955
そうか〜?innerHTMLでできることをパーサーを動かさないノード操作に
置き換えて遅くなるとかほとんど無かったんだが
一見すると絶対innerHTMLの早いだろう?って感じのコードでも実際に
計ってみるとノード操作の方が早かったりした
まあそれでも、誤差程度の差にしかならん場所には、
わかりやすさ重視でinnerHTMLを使ったりするけどね <> Name_Not_Found<>sage<>2013/10/07(月) 17:39:34.49 ID:???<> >>956
それは違います
レンダリングという実際のふるまいで判定しているのですからダックタイピング的です
比較対象が最終段階で数字となっているのであなたは勘違いしているのです
ものごとの本質を見て下さいね
>>957
C級技術者には伝わらないということが嫌というほど分かったで気を付けますね <> Name_Not_Found<>sage<>2013/10/07(月) 17:53:21.45 ID:???<> てか少し前に、このスレでもinnerHTMLの方が速い場合もあるという結論が出てたと思うけど <> Name_Not_Found<>sage<>2013/10/07(月) 17:59:58.58 ID:???<> >>959
ダックタイピングっていうのはあくまでも型付けの手法
実際のふるまいは関係無い
実際のふるまいでなくメソッドの名前等(シグネチャ)で判別される
異なるふるまいをするとしても同じシグネチャのメソッドが揃っていれば同じ型とみなされる <> Name_Not_Found<>sage<>2013/10/07(月) 18:02:06.27 ID:???<> >>959
俺俺言語やめちくり〜 <> Name_Not_Found<>sage<>2013/10/07(月) 18:06:16.77 ID:???<> >>959
素直に「そうだったんですか」とか
「勘違いしました」って謝ればいいのに
引込みがつかなくなるとこまで意地を張る哀れな性格の奴だな

今からでも「分かりました」って一言かけば
こちらとてそれ以上追求しないし
お前さんの人間度もupするぞ

いい加減見苦しい意地張りはやめよう
恥ずかしいよ? <> Name_Not_Found<>sage<>2013/10/07(月) 18:10:44.15 ID:???<> >>960
一般的な操作においては明らかに遅いです <> Name_Not_Found<>sage<>2013/10/07(月) 18:15:48.54 ID:???<> コードも貼られてないんだから一般的なケースで話すのが当たり前
〜の場合もあるとか言ってたらキリがないし

パフォーマンス云々じゃなくて質問者のコードの問題を取り去って
改善するという考え方でいかないと <> Name_Not_Found<>sage<>2013/10/07(月) 18:25:44.34 ID:???<> javascriptで関数の引数を配列として明示したいのですが
どのようにやればいいのでしょうか?

function(int[] arr){}
みたいにやりたいのですが <> Name_Not_Found<>sage<>2013/10/07(月) 18:31:13.20 ID:???<> 配列として明示するって具体的にどういうこと?
見た目の問題?
配列以外をエラーにしたいの?
それとも初期値を空配列にしたいとか?
もしくはargumentsみたいなこと言ってるんじゃないよね? <> Name_Not_Found<>sage<>2013/10/07(月) 18:45:49.65 ID:???<> >>967
見た目の問題です

配列ってわかるようにしたいです

function(array arr){}みたいにはできないみたいですし
教えてください <> Name_Not_Found<>sage<>2013/10/07(月) 18:48:49.50 ID:???<> >>968
jsdoc <> Name_Not_Found<>sage<>2013/10/07(月) 18:49:07.94 ID:???<> >>968
/**
* @param {Array} arr 配列でね!
*/
function( arr ){}

ではだめかね <> Name_Not_Found<>sage<>2013/10/07(月) 18:51:43.08 ID:???<> は?
「arr」で配列だって一目瞭然じゃない?
この程度にDOCなんていらんよ <> Name_Not_Found<>sage<>2013/10/07(月) 18:53:21.40 ID:???<> ダックタイピング的に考えると
配列が必ずしもArrayであるとは限らない <> Name_Not_Found<>sage<>2013/10/07(月) 18:56:30.20 ID:???<> TypeScriptでも使ったほうがいいな <> Name_Not_Found<>sage<>2013/10/07(月) 19:08:26.31 ID:???<> ダック・タイピング的にやるなら、こうすか?

function( arr ){
  if(arr != null && typeof arr === "object" && 'splice' in arr && 'join' in arr){
    console.log('良し');
  }
  else{
    throw('フジャッケンナ!フジャッケンナ!');
  }
} <> Name_Not_Found<>sage<>2013/10/07(月) 19:20:19.72 ID:???<> ダックタイピング&実用的にはArray.fromでパースするのがいい
lengthを持つあらゆるオブジェクトとイテレータブルオブジェクトを配列に変換できるすぐれもの <> Name_Not_Found<>sage<>2013/10/07(月) 19:32:48.40 ID:???<> 見た目的でいいんなら悪い書き方だけどこう書くこともできるよ
function ( arr = Array ) { } <> Name_Not_Found<>sage<>2013/10/07(月) 20:06:31.43 ID:???<> もし部下がこんなコード書いてたら90分説教だわ <> Name_Not_Found<>sage<>2013/10/07(月) 20:08:57.97 ID:???<> >>977
また本質的には変わらないコード書いた上に
長い説教するのだけは勘弁して下さい <> Name_Not_Found<>sage<>2013/10/07(月) 20:13:13.83 ID:???<> >>976
これ引数指定し忘れたりundefinedだっらarrがArrayオブジェクトになるんだぞ
それでもいいんか? <> Name_Not_Found<>sage<>2013/10/07(月) 20:40:40.44 ID:???<> まずArrayかどうかを判断するのがもの凄く難しいからな……
Array.isArrayが使える環境なら問題ないんだけど <> Name_Not_Found<>sage<>2013/10/07(月) 20:50:59.28 ID:???<> だからこそのダックタイピング <> Name_Not_Found<>sage<>2013/10/07(月) 21:14:31.13 ID:???<> >>964
誰が「一般」を決めるんだよw
innerHTMLが速いのは大量のコードをDOMツリーに追加するような場合だよ
これも十分一般的な用途だが <> Name_Not_Found<>sage<>2013/10/07(月) 21:15:58.18 ID:???<> >>963
それはこっちの台詞だよw
最初は優しく教えてあげてるんだからそれで納得しろよ
君と関わってもこっちは何も得るところがないんだから <> Name_Not_Found<>sage<>2013/10/07(月) 21:17:43.81 ID:???<> まとめての場合でも50倍遅いって上のベンチで出ちゃってるじゃんwwww
嘘つきw <> Name_Not_Found<>sage<>2013/10/07(月) 21:19:58.51 ID:???<> しまった巨人様だ!
皆スルーして早く帰ってもらおう! <> Name_Not_Found<>sage<>2013/10/07(月) 21:22:10.32 ID:???<> >>827
この件ですが、pot.jsをヒントにして配列をインターバルにイテレートする処理を書いて
体感速度を大幅に上昇させることができました
ありがとうございました <> Name_Not_Found<>sage<>2013/10/07(月) 21:24:08.45 ID:???<> ポットンJSの話何回するんですかねえ…… <> Name_Not_Found<>sage<>2013/10/07(月) 21:26:59.11 ID:???<> 引篭り児童を更生させてあげるのも大人の役目
早く彼が良くなることを願って茶番に付きあおう <> Name_Not_Found<>sage<>2013/10/07(月) 21:27:01.27 ID:???<> http://jsperf.com/innerhtml-vs-createelement-test

これなんかはinnerHTMLの方がずっと速い
だからその時々でパフォーマンスを比較するのがいい
一つの方法に固執するのはC級プログラマーの特徴だよ <> Name_Not_Found<>sage<>2013/10/07(月) 21:28:11.07 ID:???<> こりゃ大層なツッコミ待ちだこと <> Name_Not_Found<>sage<>2013/10/07(月) 21:29:30.45 ID:???<> >>821
確かにお前さん言うとおり只者で無いことは分かった。
表に出ちゃいけない人間だよ、お前。 <> Name_Not_Found<>sage<>2013/10/07(月) 21:33:02.76 ID:???<> 流れが悪いと察するやいなや個人攻撃に切り替える人間の屑
屑だよあんた、屑、屑、屑、くず!1 <> Name_Not_Found<>sage<>2013/10/07(月) 21:34:05.15 ID:???<> 質問スレで議論うぜえな <> Name_Not_Found<>sage<>2013/10/07(月) 21:35:02.43 ID:???<> >>982-983はなり済ましです
>>959からここまで書き込んでいません <> Name_Not_Found<>sage<>2013/10/07(月) 21:41:42.53 ID:???<> すみませんでした
今ではむきになって言い過ぎたと反省しております <> Name_Not_Found<>sage<>2013/10/07(月) 21:47:48.95 ID:???<> 反省は人を成長させる <> Name_Not_Found<>sage<>2013/10/07(月) 21:48:15.72 ID:???<> 実際の使用方法は要素を空にするより追加や書き換えが主
>>953の比べ方こそ特殊 <> Name_Not_Found<>sage<>2013/10/07(月) 21:53:24.01 ID:???<> 富豪プログラミングしろよ <> Name_Not_Found<>sage<>2013/10/07(月) 22:05:29.38 ID:???<> 999ならパフォーマンス厨昇天 <> Name_Not_Found<>sage<>2013/10/07(月) 22:06:17.46 ID:???<> 1000ならパフォーマンス厨堕天 <> 1001<><>Over 1000 Thread<> このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。 <>