首頁 > web前端 > js教程 > 為什麼修改後 `console.log()` 顯示意外的物件值?

為什麼修改後 `console.log()` 顯示意外的物件值?

Mary-Kate Olsen
發布: 2024-12-20 17:07:10
原創
765 人瀏覽過

Why Does `console.log()` Show Unexpected Object Values After Modification?

物件和console.log 的令人困惑的行為

當使用console.log() 函數檢查物件時,您可能會遇到奇怪的情況結果。例如,如果您記錄物件數組,然後使用 splice() 修改它,您會發現控制台仍然顯示原始數組。

為什麼會發生這種情況

Console.log 非同步檢查物件。儘管控制台同步檢索物件的引用,但它會延遲顯示其屬性,直到您展開它之後(此行為因瀏覽器而異)。因此,如果在檢查之前更改對象,則顯示的資料將包含更新的值。

辨識差異

Chrome 會提供視覺提示來提醒您注意這一點行為。當您將滑鼠懸停在物件上時,一個小「i」會出現在一個方塊中,並顯示以下訊息:「記錄時,左側的物件值已被快照,下面的值剛剛被評估。 ”

解決問題

為了避免這種差異,請考慮記錄單一物件屬性值:

console.log(obj.foo, obj.bar, obj.baz);
登入後複製

或者,您可以使用JSON.stringify() 將物件轉換為JSON 字串:

console.log(JSON.stringify(obj));
登入後複製

另一種方法是透過重新保留物件的可檢查性使用JSON.parse() 編碼:

console.log(JSON.parse(JSON.stringify(obj)));
登入後複製

但是,請注意JSON 刪除了不可序列化的屬性,例如作為函數和DOM 元素。對於複雜的對象,採用強大的深度複製機制來保留這些屬性。

以上是為什麼修改後 `console.log()` 顯示意外的物件值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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