首頁  >  文章  >  web前端  >  Console.log() 在 Google Chrome 中是否正確輸出物件和陣列?

Console.log() 在 Google Chrome 中是否正確輸出物件和陣列?

Barbara Streisand
Barbara Streisand原創
2024-10-20 12:30:02542瀏覽

Does Console.log() Correctly Output Objects and Arrays in Google Chrome?

Console.log() 與Google Chrome 中的物件和陣列不一致

Console.log(),Google Chrome 中的除錯工具,與物件和陣列一起使用時表現出特殊的行為。此異常在下列情況下出現:

  1. 建立嵌套陣列(例如 [[345,"test"]])。
  2. 陣列記錄到控制台。
  3. 內部數組值被修改,console.log() 隨後顯示修改後的值,而不是執行時數組的值。
<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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn