我有一个javascript对象数组,每个对象都是用'new'创建的。如果出现错误,我想清除整个数组,以便它由JS引擎进行GC管理。为此,只需将数组变量设置为'null',或者我需要拼接数组中的所有元素并在将数组变量设置为'null'之前将它们设置为null吗?
我问的原因是在Firefox中我在显示(console.log)数组之前将其分配给null并且显示的对象(通常在显示中更新,我假设甚至更晚)仍然显示数组的元素当我稍后检查它时,我怀疑这些元素是否实际上是免费的。
TIA
答案 0 :(得分:7)
要清除数组,您只需将长度设置为零:
var arr = [1,2,3,4,5];
console.log(arr);
arr.length=0;
console.log(arr);
结果:
[1, 2, 3, 4, 5]
[]
编辑: 刚刚在主题http://davidwalsh.name/empty-array
上找到了这个查看注释似乎只是将变量设置为新数组是最简单的方法:
arr = [];
根据测试结果,内存的GC比将长度设置为0更快。我想这会与触发GC的分配有关。
这里有各种方法的有趣性能测试:http://jsperf.com/array-destroy