Console.log() Google Chrome のオブジェクトおよび配列との不一致
Console.log()、Google Chrome のデバッグ ツール、オブジェクトや配列とともに使用すると、独特の動作を示します。この異常は次の場合に発生します。
<code class="javascript">var test = [[2345235345,"test"]] console.log(test); test[0][0] = 1111111; // outputs: [[1111111,"test"]] var testb = {}; testb.test = "test"; console.log(testb); testb.test = "sdfgsdfg"; // outputs: {"testb":"test"} var testc = ["test","test2"]; console.log(testc); testc[0] = "sdxfsdf"; // outputs: ["test","test2"]</code>
興味深いことに、この動作はChrome 専用です。 Firefoxでは表示されません。さらに、Chrome デバッガーでコードを 1 行ずつ実行すると、console.log() に正しい値が表示されます。
現象の起源
さらに調査を進めると、これは Webkit では解決されているが、Google Chrome にはまだ組み込まれていない既知のバグであることが判明しました。このバグは 2010 年 3 月に最初に報告され (https://bugs.webkit.org/show_bug.cgi?id=35801)、修正は 2012 年 8 月に実装されました。ただし、このバグはまだ Chrome には組み込まれていません。
コンソール状態の影響
console.log() の動作は、コンソール ウィンドウの状態に影響されます。スクリプトのロード時にコンソール ウィンドウが開いている場合、console.log() は配列とオブジェクトの現在の値を表示します。ただし、スクリプトのロード後にコンソール ウィンドウを閉じて開いた場合、console.log() の実行後に変更された場合でも、console.log() には変更された値が表示されます。
<code class="javascript">var greetings=['hi','bye']; console.log(greetings); setTimeout(function(){ greetings.push('goodbye'); },3000);</code>
If上記のスクリプトは、コンソール ウィンドウがすでに開いている状態で実行され、console.log() には 2 つの項目が表示されます。ページの読み込み後にコンソール ウィンドウを閉じて再度開くと、console.log() には配列の変更された状態を反映する 3 つの項目が表示されます。
この特殊性は、Google Chrome の console.log() 機能に潜在的なバグがあることを示唆しています。 、現在のバージョンの Chrome では未修正のままです。
以上がConsole.log() は Google Chrome でオブジェクトと配列を正しく出力しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。