Chrome の JavaScript コンソールで予期しないオブジェクト評価が発生する
Firefox と Chrome の JavaScript コンソールを比較すると、特異な動作が明らかになりました。 Firefox は配列の初期値とその後の変更を正確に出力しますが、Chrome は両方のインスタンスの変更された値のみを表示します。
問題:
次のコードはこの問題を示しています。 :
var s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s);
Firefox のコンソールは期待どおりの結果を生成します出力:
["hi"] ["bye"]
ただし、Chrome のコンソールのレンダリング:
["bye"] ["bye"]
答え:
この動作は既知の動作によるもので、現在修正されていますWebkit のバグ: https://bugs.webkit.org/show_bug.cgi?id=35801。これには、コンソールのオブジェクトの遅延評価が含まれます。
遅延評価とは、出力を表示する準備ができるまでコンソールがオブジェクトを評価しないことを意味します。これは、コンソールがアクティブになる前にオブジェクトが変更された場合でも発生します。
解決策:
この問題を回避するには、ログを記録する前にオブジェクトを文字列表現に変換できます。 it:
var s = ["hi"]; console.log(s.toString()); s[0] = "bye"; console.log(s.toString());
これにより、オブジェクトの評価が即座に強制され、コンソール出力:
hi bye
以上がChrome の JavaScript コンソールには、変更された配列の最終値のみが表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。