JavaScript,内存:数组中的元素

时间:2015-11-03 14:00:00

标签: javascript arrays memory memory-management

我有一个简短的问题,只是出于好奇。 让我们说我有一个对象,它有一个数组作为属性this.arr = ["one", "two", "three", ...],我用n元素填充这个数组。

如果我运行this.arr = [],所有这些元素会发生什么。它们被删除,留在记忆中,泄露了吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

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中,没有"内存泄漏"。但是,你可以忘记摆脱你不再需要的物体。如果该对象引用了其他对象,这些对象在术语中引用了其他对象,那么树的单个对象将不会被销毁。

大多数情况下,如果您使用临时变量,您将不必担心它。

答案 1 :(得分:0)

删除它们。事实上,这是一种清空数组的快捷方法。

答案 2 :(得分:0)

它将被删除。如果将this.arr的值赋给另一个变量,则该数组将是可重用的,但另一个变量将具有不同的内存地址,但是存储原始变量的地址将被清空。

答案 3 :(得分:0)

它们将被删除,如果字符串对象不再被任何引用。因此,字符串对象有资格进行垃圾收集以删除/释放这些对象。