ホームページ  >  記事  >  ウェブフロントエンド  >  Chrome で Console.log() が元の値ではなく変更された値を表示するのはなぜですか?

Chrome で Console.log() が元の値ではなく変更された値を表示するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-20 12:34:02289ブラウズ

Why Does Console.log() Display Modified Values Instead of Original Values in Chrome?

Console.log() オブジェクトと配列のログを記録する際の Chrome の不一致

Google Chrome で console.log( ) ネストされた配列またはオブジェクトをログに記録します。ログを記録した後に配列またはオブジェクトの最も内側の値を変更すると、console.log() はログ記録時の元の値ではなく、変更された値を表示します。

再現手順

問題を再現するには:

  1. ネストされた配列を作成します (例: [[345, "test"]])。
  2. 配列をコンソールに記録しますconsole.log().
  3. 内部配列の値を変更します。例: test0 = 1111111.
  4. Console.log() は [[1111111, "test"]] を出力します。

この不一致は、変数 (testb、testc) に格納されているオブジェクトと配列にも影響します。

根本的な問題

広範な調査の結果、この問題は、WebKit のバグとして以前に報告されていたことがわかりました (https://bugs.webkit.org/show_bug.cgi?id=35801)。 Chromium 開発者はこの問題を認めていますが、技術的な制限により修正の可能性は低いと述べています。

修正と不一致

ただし、修正は 2012 年に WebKit に実装されました。それにもかかわらず、Google Chrome はまだこの修正を採用していません。その結果、console.log() の動作は、ログ記録時にコンソール ウィンドウが開いているかどうかによって異なります。

  • コンソール ウィンドウが開いています: Console.log() は、変更されている場合でも、現在の値を表示します。
  • 最初に閉じられたコンソール ウィンドウ: Console.log() は、ログ記録時の値を表示します。

結論

Google Chrome の console.log() 機能のこのバグは残り、デバッグ作業に影響を与えます。 Chrome で問題が解決されるまで、この不一致を認識し、別のデバッグ方法を検討することをお勧めします。

以上がChrome で Console.log() が元の値ではなく変更された値を表示するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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