ホームページ > ウェブフロントエンド > jsチュートリアル > Chrome の JavaScript コンソールには、変更された配列の最終値のみが表示されるのはなぜですか?

Chrome の JavaScript コンソールには、変更された配列の最終値のみが表示されるのはなぜですか?

Patricia Arquette
リリース: 2024-12-22 09:48:43
オリジナル
785 人が閲覧しました

Why Does Chrome's JavaScript Console Show Only the Final Value of a Modified Array?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート