所以假设你有一个数组:
var array = [1, 2, 3, 4, 5, 6]
然后你将对该数组的引用重新分配给一个新的空数组:
array = [];
是否原始数组已从内存中删除,因为没有更多引用它?
答案 0 :(得分:0)
可能不会立即(作为重新分配的一部分),但只要对它的引用计数已降至0
(没有其他变量指向 数组),它可以被垃圾收集。
答案 1 :(得分:0)
答案为否(如果var名称不同[看到您更改了问题]),并且在您的问题中添加的新示例中为是。在var名称不同的情况下,如果需要将原始数组设为null,则可以释放一些内存,但是它们都会占用空间。在数组2中,您实际上是在创建一个包含第一个数组内容的新数组。对象(js中的assoc数组)是一个不同的故事,但是遵循上面提到的参考规则。
如果在同一范围内使用相同的var名称,则为yes。第二个调用将释放第一个场景中的内存