Chrome、Firefox、Safari でコンソール ログに異なる値が表示されるのはなぜですか?

DDD
リリース: 2024-10-25 14:21:45
オリジナル
947 人が閲覧しました

Why Do Console Logs Show Different Values in Chrome, Firefox, and Safari?

Chrome、Firefox、Safari のコンソール オブジェクト値の違い

JavaScript では、オブジェクトは参照によって保存されます。つまり、console.log が呼び出します。オブジェクト引数を指定すると、オブジェクト参照のログが記録されます。これにより、コンソールでオブジェクトを表示するときに予期しない動作が発生する可能性があります。

Firefox の Firebug では、オブジェクトのログに常に正しい値が表示されます。

Object { bar=1111 }
1111

Object { bar=2222 }
2222
ログイン後にコピー

ただし、Chrome および Safari のコンソールでは、異なる動作が観察されます:

Object { bar=2222 }                      // Object shows updated value
1111                                      // Attribute value remains unchanged

Object { bar=2222 }                      // Object shows updated value
2222                                      // Attribute value is correct
ログイン後にコピー

この不一致は、最初の console.log 呼び出しの後にオブジェクトをキャッシュするという Chrome (および WebKit を使用する Safari) の設計上の決定に起因します。キャッシュされた値は、その間にオブジェクトが更新された場合でも、後続のすべての console.log 呼び出しに使用されます。

この混乱を避けるために、次のような非オブジェクト メソッドを使用してオブジェクト値をログに記録することをお勧めします。

console.log(JSON.stringify(foo));      // Serializes the object into a JSON string
ログイン後にコピー

代わりに、同様の機能を提供する Chrome の toJSON メソッドと valueOf メソッドを使用することもできます。

console.log(foo.toJSON());                // Invokes the object's `toJSON` method (if defined)
console.log(foo.valueOf());               // Invokes the object's `valueOf` method (if defined)
ログイン後にコピー

これらの手法を使用すると、コンソールに表示される値が次のようになります。オブジェクトの実際の状態と一致しています。

以上がChrome、Firefox、Safari でコンソール ログに異なる値が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!