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