ホームページ >ウェブフロントエンド >jsチュートリアル >Chrome の JavaScript コンソールが Firefox とは異なるオブジェクト評価動作を示すのはなぜですか?
オブジェクトに対する Chrome の JavaScript コンソール評価動作
指定されたコード スニペット内:
var s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s);
Firefox および Chrome コンソール異なる結果を表示します。 Firefox では変更後の更新された配列が表示されますが、Chrome では両方のインスタンスで変更された値が表示されます。
不一致の原因
Chrome の JavaScript コンソールはオブジェクトの遅延評価を実行します。これは、オブジェクトをコンソールに表示する必要がある場合など、必要な場合にのみオブジェクトを評価することを意味します。したがって、この場合、Chrome は最初の console.log ステートメント中にオブジェクトを評価せず、2 番目の console.log ステートメントが実行されるまで待機します。これにより、Chrome はオブジェクトの早期評価によるオーバーヘッドを回避できます。
遅延の回避
Chrome にオブジェクトの即時評価を強制するには、
console.log(s.toString());
toString を呼び出すことにより、オブジェクトの表現が作成されます。後続のステートメントによって変更されることはありません。 Chrome が console.log ステートメントを評価すると、オブジェクトの更新された値が手元にあるため、遅延評価は行われません。
以上がChrome の JavaScript コンソールが Firefox とは異なるオブジェクト評価動作を示すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。