根据this answer on a related question,如果您希望对象被垃圾收集,最好使对象明显不可用。
对于所有实际意图和目的,是否使用null
值或undefined
值完成是否重要?
很简单,下面的两个对象(无论它们最初可能引用了什么)都可以同样访问垃圾收集器吗?
window.foo = null;
window.bar = void 0;
答案 0 :(得分:3)
您指定的值无关紧要:它可能是null
,undefined
,{}
或42
。
重要的是你需要打破变量和堆中对象之间的连接。
只要一个对象无法访问 - 它就是一个被收集的候选者,无论当前某天所引用的变量的当前值是什么。
以下是来自Google Chrome的内存快照,只是为了好玩:
相应的JSFiddle:http://jsfiddle.net/r9b5taxf/