【发布时间】:2018-08-17 02:59:26
【问题描述】:
假设我创建了两个对象:
var a = new SomeObject();
var b = document.getElementById("someElement");
/* Do something with those two object */
在对这两个对象执行某些操作后,我需要清除它们以防内存泄漏。
问题是我应该在垃圾收集器更喜欢的“null”和“undefined”之间选择哪一个。
// firstly, remove DOM node
b.parentElement.remove(b);
// then clear the variants using "null" or "undefined"
a = null;
b = null;
/* or:
a = undefined;
b = undefined;
*/
任何 cmets 将不胜感激!
【问题讨论】:
-
仅供参考,在答案中添加了另一段,解释何时可能需要这样做。例如,我知道您的示例代码只是组成代码,但在这些示例中,
a和b一旦在返回中定义它们的函数就会超出范围。此时,a和b引用的任何内容都将无法通过a和b访问。如果你,例如使用使用a或b(在a或b关闭)的匿名函数运行setTimeout,然后无论指向什么都将保留在内存中,直到该回调不再可运行。希望你能看到模式:)