ホームページ >ウェブフロントエンド >jsチュートリアル >Chrome の JavaScript コンソールで Firefox と比較して一貫性のないオブジェクト値が表示されるのはなぜですか?
Chrome の JavaScript コンソール: 遅延オブジェクト評価の謎
デバッグ ツールの分野では、JavaScript コンソールは非常に貴重な資産です。ただし、オブジェクトのログを記録するときに、Chrome と Firefox の間で不一致が発生することがあります。
問題
次のコードを考えてみましょう:
var s = ["hi"]; console.log(s); s[0] = "bye"; console.log(s);
Firefox では、コンソールは配列を次のように正確に記録します:
[ "hi" ] [ "bye" ]
ただし、Chrome のJavaScript コンソール (バージョン 7.0.517.41 ベータ版) は、両方のステートメントを次のようにログに記録します:
[ "bye" ] [ "bye" ]
バグか遅延評価か?
これはバグなのか、それともChromeの特徴console?
バグの調査
検索すると、既存の未確認の Webkit バグが発見されました (https://bugs.webkit.org/show_bug.cgi?id=) 35801) は、まさにこの問題について説明しています。
重大度
バグの重大度は議論の余地があります。これは本物のバグであると主張する人もいますが、許容範囲内であると主張する人もいます。
問題の回避
議論にもかかわらず、次の簡単な解決策があります。コード内でこの動作を回避するには:
var s = ["hi"]; console.log(s.toString()); s[0] = "bye"; console.log(s.toString());
オブジェクトを文字列表現に変換する (経由) toString) を使用すると、後続の変更の影響を受けない静的イメージを効果的に作成できます。コンソールは次のスナップショットを出力します:
hi bye
以上がChrome の JavaScript コンソールで Firefox と比較して一貫性のないオブジェクト値が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。