首頁 > web前端 > js教程 > 為什麼 `console.log()` 在 JavaScript 中顯示立即數組變更?

為什麼 `console.log()` 在 JavaScript 中顯示立即數組變更?

Mary-Kate Olsen
發布: 2024-12-13 01:15:10
原創
397 人瀏覽過

Why Does `console.log()` Show Immediate Array Changes in JavaScript?

console.log() 立即回顯數組引用中的更改

在JavaScript 中,保存數字和字符串等原始值的變數按值傳遞,而那些包含物件的則透過引用傳遞。在操作數組時,這種區別變得很明顯。

考慮以下程式碼:

var A = [2, 1];
var C = A;

console.log(C); // [1, 2]
A.sort();
console.log(C); // [1, 2]
登入後複製

在此範例中,C 被指派了對陣列 A 的引用。當 A 排序時,更改為立即反映在 C 中,甚至在再次訪問 A 之前。

為什麼會發生這種情況?與原始值不同,物件是堆分配的,這意味著它們駐留在電腦的記憶體中並透過引用進行存取。當我們記錄 C 時,console.log() 會列印對陣列的引用,而不是其內容的副本。因此,在再次使用 A 之前,對引用物件的任何後續修改(在本例中為對陣列進行排序)也將在控制台中看到。

要避免這種行為,請在呼叫即時console.log() 時,您可以使用以下技巧:

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

此技術使用JSON 序列化和反序列化創建對象的深層副本。

以上是為什麼 `console.log()` 在 JavaScript 中顯示立即數組變更?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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