我有一個簡短的問題,只是出於好奇。 比方說,我有一個對象,它有一個數組作爲屬性this.arr = ["one", "two", "three", ...]
,並用n
元素填充此數組。JavaScript,內存:Array中的元素
如果我運行this.arr = []
,所有這些元素將會發生什麼。他們是否被刪除,保存在內存中,泄漏?
謝謝!
我有一個簡短的問題,只是出於好奇。 比方說,我有一個對象,它有一個數組作爲屬性this.arr = ["one", "two", "three", ...]
,並用n
元素填充此數組。JavaScript,內存:Array中的元素
如果我運行this.arr = []
,所有這些元素將會發生什麼。他們是否被刪除,保存在內存中,泄漏?
謝謝!
this.arr = []
將創建一個新的空數組並將其分配給arr
屬性。如果程序中沒有更多的前一個數組的引用,它將最終被垃圾回收(由JS引擎自動銷燬)。但是如果在某個地方還是有參考的話,它仍然會存在。
this.arr = [1, 2, 3, 4];
var backup = this.arr;
this.arr = [];
// backup still points to the array, so it won't be destroyed
如果你只是想刪除,你將不再使用它的一個數組,你可以做this.arr = null
代替。
在JS中,沒有「內存泄漏」這樣的事情。但是,您可以忘記擺脫不再需要的物體。如果該對象具有對其他對象的引用,而其他對象的引用是其他對象的引用,那麼樹的單個對象將不會被破壞。
大多數情況下,如果使用臨時變量,則不需要擔心。
它將被刪除。如果將this.arr
的值分配給另一個變量,則該數組將是可重用的,但其他變量將具有不同的內存地址,但存儲原始變量的地址將被清空。
它們將被刪除,如果字符串對象不再被任何東西引用。字符串對象因此適合於垃圾收集來刪除/釋放這些對象。
可能重複的[如何在JavaScript中釋放內存](http://stackoverflow.com/questions/8467350/how-to-free-up-the-memory-in-javascript) – felipsmartins
閱讀:[Javascript內存管理](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management) – felipsmartins
[如何在JavaScript中清空數組?](http://stackoverflow.com/questions/1232040/how-to-empty-an-array-in-javascript) –