「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ChromeのJavaScriptコンソールがオブジェクトを評価するときに予期しない結果を示すのはなぜですか?

ChromeのJavaScriptコンソールがオブジェクトを評価するときに予期しない結果を示すのはなぜですか?

2025-04-29に投稿されました
ブラウズ:416

Why Does Chrome's JavaScript Console Show Unexpected Results When Evaluating Objects?

ChromeのJavaScriptコンソールの動作:オブジェクトを怠lazily

= "bye"; console.log(s);

in firefox、コンソール出力:
var s = ["hi"];
console.log(s);
s[0] = "bye";
console.log(s);
["hi"] ["bye"]

ただし、Chromeバージョン7.0.517.41ベータでは、出力は
var s = ["hi"];
console.log(s);
s[0] = "bye";
console.log(s);
["bye"]です。 ["bye"]

[ "bye" ]
[ "bye" ]

この動作は、オブジェクトを評価するときにクロムのコンソールが「怠zy」である可能性があることを示唆しています。最初のConsole.logステートメントが実行されると、コンソールはメモリ内のオブジェクトを参照します。最初の要素を「Hi」から「Bye」に変更するなど、オブジェクトの後続の変更は、最初のConsole.logステートメントの出力には反映されません。これは、コンソールが最初のコンソールの時点でのみオブジェクトを評価し、スナップショットを保存することを意味します。 (今修正)。バグは、Chromeのコンソールは直接アクセスされるオブジェクトの怠zyな評価を実行しないため、観察された動作をもたらします。これにより、Chromeは後続の変更によって変更されないオブジェクトの表現を作成し、コンソール出力がオブジェクトの現在の状態を反映することを保証する。 console.log(s.toString()); s [0] = "bye"; console.log(s.tostring());

output:

hi さよなら

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3