首頁 > web前端 > js教程 > 為什麼 Chrome 的 JavaScript 控制台在評估物件時顯示意外結果?

為什麼 Chrome 的 JavaScript 控制台在評估物件時顯示意外結果?

Mary-Kate Olsen
發布: 2024-12-27 04:59:13
原創
639 人瀏覽過

Why Does Chrome's JavaScript Console Show Unexpected Results When Evaluating Objects?

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

Chrome JavaScript 控制台在評估物件時的行為被認為可能是意外的。為了說明這一點,請考慮以下程式碼:

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

在Firefox 中,控制台輸出:

[ "hi" ]
[ "bye" ]
登入後複製

但是,在Chrome 版本7.0.517.41 beta 中,輸出為:

[ "bye" ]
[ "bye" ]
登入後複製

意外的評估行為

此行為表明 Chrome 的控制台在評估對象時可能會「惰性」。當執行第一個console.log語句時,控制台會引用記憶體中的物件。對物件的任何後續修改(例如將第一個元素從“hi”更改為“bye”)不會反映在第一個 console.log 語句的輸出中。這表示控制台僅在第一個 console.log 語句時評估物件並儲存快照。

錯誤說明

此行為記錄在下列Webkit 錯誤回報:https://bugs.webkit.org/show_bug.cgi?id=35801(現已修正)。此錯誤表明 Chrome 的控制台不會對直接存取的物件執行延遲評估,從而導致觀察到的行為。

解決方法

為了防止這種意外行為,一個可以在將物件傳遞到 console.log 之前對其調用 toString。這會強制 Chrome 建立不會因後續變更而變更的物件表示,從而確保控制台輸出反映物件的當前狀態。

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

輸出:

hi
bye
登入後複製

以上是為什麼 Chrome 的 JavaScript 控制台在評估物件時顯示意外結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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