null 和 undefined 对于显式使对象不可访问是否同样有效?
Are null and undefined equally valid for explicitly making objects unreachable?
根据 this answer on a related question,如果您希望某个对象被垃圾回收,最好使它们明确不可用。
对于所有实际意图和目的,使用 null
值还是 undefined
值是否重要?
简而言之,垃圾收集器是否可以平等地访问以下两个对象(无论它们最初可能引用了什么)?
window.foo = null;
window.bar = void 0;
分配什么值并不重要:它可能是 null
、undefined
、{}
或 42
.
重要的是你需要断开堆中变量和对象之间的连接。
一旦一个对象不可访问 - 它就是一个被收集的候选者,不管某一天引用它的变量当前持有的当前值是多少。
这是来自 Google Chrome 的内存快照,仅供娱乐:
以及对应的JSFiddle:http://jsfiddle.net/r9b5taxf/
根据 this answer on a related question,如果您希望某个对象被垃圾回收,最好使它们明确不可用。
对于所有实际意图和目的,使用 null
值还是 undefined
值是否重要?
简而言之,垃圾收集器是否可以平等地访问以下两个对象(无论它们最初可能引用了什么)?
window.foo = null;
window.bar = void 0;
分配什么值并不重要:它可能是 null
、undefined
、{}
或 42
.
重要的是你需要断开堆中变量和对象之间的连接。
一旦一个对象不可访问 - 它就是一个被收集的候选者,不管某一天引用它的变量当前持有的当前值是多少。
这是来自 Google Chrome 的内存快照,仅供娱乐:
以及对应的JSFiddle:http://jsfiddle.net/r9b5taxf/