ホームページ  >  記事  >  ウェブフロントエンド  >  Firefox と比べて Chrome と Safari コンソールのオブジェクト表示に異常が発生するのはなぜですか?

Firefox と比べて Chrome と Safari コンソールのオブジェクト表示に異常が発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-27 10:01:30483ブラウズ

Why Do Chrome and Safari Console Object Display Anomalies Occur Compared to Firefox?

ブラウザ コンソールのオブジェクト表示の異常

プログラミングにおけるデバッグには、コンソール内のオブジェクトのプロパティと値の検査が含まれます。ただし、Chrome、Firefox、Safari のブラウザ コンソールでオブジェクトを表示すると、予期しない不一致が発生する可能性があります。

Chrome と Safari と Firefox: オブジェクト値の不一致

質問で提供されている JavaScript コードを考えてみましょう:

<code class="javascript">var foo = { bar: 1111 };
console.log(foo);
console.log(foo.bar);
foo.bar = 2222;
console.log(foo);
console.log(foo.bar);</code>

Firefox の Firebug では期待値が次のように表示されます:

Object { bar=1111}
1111
Object { bar=2222}
2222

Chrome と Safari のコンソールは独特の動作を示します:

Object { bar=2222}
1111
Object { bar=2222}
2222

矛盾の説明

Chrome と Safari のコンソールの動作は、設計上の決定に基づいています。オブジェクトが最初に console.log に渡されるとき、それは参照として扱われます。同じオブジェクトの後続のログには、最初のログの時点の値ではなく、現在の値が表示されます。

コンソールでオブジェクトのタブが展開されると、その値は固定され、元のオブジェクトから切り離されます。 。その結果、後でオブジェクトの値を変更しても、展開されたタブでの表示には影響しません。

回避策

この不一致を回避するには、開発者はオブジェクトをシリアル化するメソッドを使用できます。オブジェクトを非オブジェクト値に変換する (JSON 文字列化など):

<code class="javascript">console.log(JSON.stringify(foo));</code>

以上がFirefox と比べて Chrome と Safari コンソールのオブジェクト表示に異常が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。