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 偵錯器中逐行執行,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>
如果上述腳本在控制台視窗已開啟的情況下執行,console.log() 將顯示兩個項目。如果控制台視窗在頁面載入後關閉並重新打開,console.log() 將顯示三個項目,反映陣列的修改狀態。
此特性顯示 Google Chrome 的 console.log() 功能中存在潛在錯誤,該問題在目前版本的 Chrome 中仍未修復。
以上是Console.log() 在 Google Chrome 中是否正確輸出物件和陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!