問題:
在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中文網其他相關文章!