0

所以假设你有一个数组:

var array = [1, 2, 3, 4, 5, 6]

然后将对该数组的引用重新分配给一个新的空数组:

array = [];

既然不再有对它的引用,那么该原始数组是否已从内存中删除?

4

2 回答 2

0

可能不会立即(作为重新分配的一部分),但只要对它的引用计数下降到0(没有其他变量指向数组),它就可以被垃圾收集。

于 2012-10-04T02:23:22.100 回答
0

答案是否定的(如果 var 名称不同 [看到您更改了问题]),答案是否定的,就像在您的问题中添加的新示例一样。在 var 名称不同的情况下,如果需要,您可以通过使原始数组为空来释放一些内存,但是它们都会占用空间。在数组 2 中,您实际上是在使用第一个数组的内容创建一个新数组。对象(js 中的 assoc 数组)是另一回事,但要遵循上面提到的引用规则。

如果您在同一范围内使用相同的 var 名称,则可以。第二次调用将从第一个场景中释放内存

于 2012-10-04T02:28:38.740 回答