null和undefined是否同样有效用于显式使对象无法访问?

时间:2015-05-11 10:00:15

标签: javascript garbage-collection

根据this answer on a related question,如果您希望对象被垃圾收集,最好使对象明显不可用。
对于所有实际意图和目的,是否使用null值或undefined值完成是否重要?

很简单,下面的两个对象(无论它们最初可能引用了什么)都可以同样访问垃圾收集器吗?

window.foo = null;
window.bar = void 0;

1 个答案:

答案 0 :(得分:3)

您指定的值无关紧要:它可能是nullundefined{}42

重要的是你需要打破变量和堆中对象之间的连接。

只要一个对象无法访问 - 它就是一个被收集的候选者,无论当前某天所引用的变量的当前值是什么。

以下是来自Google Chrome的内存快照,只是为了好玩:

enter image description here

相应的JSFiddle:http://jsfiddle.net/r9b5taxf/