2012-10-09 8 views
5

可能性の重複:
Is Chrome's JavaScript console lazy about evaluating arrays?なぜ、Chromeは値が表示される前に配列から削除されていると表示していますか?

Chromeのjsの値が削除される前に、コンソールが削除さ値を持つ配列を示しています。どうして?

jsFiddle that demonstrates this behavior。クロムconsole.log

var list=[]; 
list.push("one"); 
list.push("two"); 
list.push("three"); 
console.log(list);      //["two", "three", undefined × 1] 
$("#output").append(JSON.stringify(list));//["one","two","three"] 

list.shift(); 

$("#output").append($("<br>")); 

console.log(list);      //["two", "three"] 
$("#output").append(JSON.stringify(list));//["two","three"] 

+0

同様の質問について、より信頼できる回答があります。http://stackoverflow.com/questions/4198912/bizarre-console-log-behaviour-in-chrome-developer-tools、http://stackoverflow.com/questions/11214430/wrong-value-in-console-log、http://stackoverflow.com/questions/11118758/bug-in-console-log –

+0

http://stackoverflow.com/questions/4057440/is-chromes -javascript-console-lazy-about-evaluating-arrays?lq = 1 –

+0

この問題について重複した質問がありますか? –

答えて

6

"遅延" されています。この場合、私はプログラムの最後まで信じます。 Chromeで、ある

console.logが直ちに入力オブジェクトを文字列化ではなく、文字列化(オブジェクトがこの場合に変更された後に)「後いくつかの時間」を実行せず、実際に前ディスプレイ結果は、

console.log(JSON.stringify(list))となります。


これはバグas far back as Chrome 5(?バグ修正の対象はMstone-22であるので、20/21クロームではない)と修正がwebkitベースに追加されたと報告しました。今日の時点では、オブジェクト(配列)をコンソールにダンプすると、オブジェクトのプロパティがコンソールオブジェクトの展開時に読み込まれます(つまり遅延します)。つまり、同じオブジェクトを変更しながらダンプすると、コンソールを使用してデバッグするのが難しくなります。

この変更により、ロギングの瞬間にオブジェクト/アレイの短縮プレビューが生成され始め、この情報がフロントエンドに渡されます。これは、フロントエンドが既に開かれている場合にのみ発生し、console.log()に対してのみ動作し、コンソールのライブ操作は動作しません。

+0

が実際にそうであるように見えます。それについての参考資料はありますか? –

+0

@ antony.trupe残念ながら、いいえ:( –

+0

バグの場合は、[crbug.com](http://crbug.com/)に提出する必要がありますか? –

関連する問題