在Google Chrome 中調試代碼時,觀察到console.log() 在處理巢狀數組時表現得很奇怪。記錄數組時,在記錄後修改其內部值會導致記錄的輸出反映更新後的值而不是記錄時的值。 Firefox 中不存在這種行為。
進一步調查顯示,在載入期間開啟 Chrome 控制台時會出現不一致的情況。控制台最初關閉並在頁面載入後打開,console.log() 顯示記錄時數組的實際值。
經過深入研究,它發現這種行為被認為是 Webkit 中的一個錯誤。然而,修復程式已於 2012 年 8 月實施,但尚未在 Google Chrome 中發布。
一位 Chromium 開發人員對此錯誤發表了評論,表示在控制台上複製物件可能會不可行。此外,監聽物件屬性變更以保持準確的值是不切實際的。
console.log() 的目前實作避免在控制台中顯示物件時複製物件。相反,在記錄時會產生簡短的預覽,提供物件屬性的快照。只有當控制台已開啟時才會發生這種情況,這解釋了根據控制台的初始狀態而導致的行為差異。
Google Chrome 的 console.log() 中的這種不一致行為是由於控制台內物件處理的實作。應保留預期行為,因為預覽反映了記錄時物件的值。開發人員應該意識到這種行為,並在可能的情況下使用替代調試方法。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3