首頁 > web前端 > js教程 > 為什麼 Chrome 的 JavaScript 控制台顯示修改後的物件值而不是原始值?

為什麼 Chrome 的 JavaScript 控制台顯示修改後的物件值而不是原始值?

Susan Sarandon
發布: 2024-12-24 03:20:18
原創
294 人瀏覽過

Why Does Chrome's JavaScript Console Show Modified Object Values Instead of Original Values?

Chrome 的JavaScript 控制台物件評估行為

問題:

在JavaScript 程式碼片段中,定義了一個數組,並且列印到控制台。修改數組元素後,再次列印。 Firefox 的控制台顯示兩個正確的值,但 Chrome 的控制台會延遲計算物件並列印兩個實例的修改值。

程式碼中是否有錯誤,或者這是 Chrome 控制台的行為?

答案:

正如 WebKit 錯誤報告(現已修復)中所指出的,存在一個問題關於 Chrome 在控制台中對對象的評估。

解釋與避免:

此行為源自於 Chrome 主機對物件的惰性評估性質。它僅在它們顯示在控制台上時對其進行評估,如果在顯示之前修改了對象,則會導致錯誤的輸出。

為了避免此問題,可以在物件上呼叫 .toString() ,這會建立一個後續程式碼變更不會改變的表示形式。在列印到控制台之前呼叫 .toString() 可確保顯示正確的值。

修改後的程式碼:

var s = ["hi"];
console.log(s.toString()); // Prints "hi"
s[0] = "bye";
console.log(s.toString()); // Prints "bye"
登入後複製

使用此修改後的方法,控制台輸出Chrome 中的結果與Firefox 中的結果相同,顯示數組的兩個正確值。

以上是為什麼 Chrome 的 JavaScript 控制台顯示修改後的物件值而不是原始值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板