Google为什么声称JavaScript关闭很危险



我刚刚阅读了Google JS样式指南的这一点:http://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml?

我不完全理解它。虽然element.onclick已分配了功能,一切都很好。没有收集垃圾,但这没关系,因为我们仍在使用对象。

一旦我们分配

element.onclick = null; 

然后,闭合将被收集到垃圾,因为元素不再指向它。问题在哪里?

他们提出的观点是在此代码中:

function foo(element, a, b) {
   element.onclick = function() { /* uses a and b */ };
}

element保留对闭合的引用,并封闭了element的引用。

现在,如果将element设置为null,通常您会期望它会被收集到垃圾,因为似乎没有什么是引用它了。但是,这不会发生,因为关闭实际上仍在引用它,因此会造成内存泄漏。

如"样式指南"中提到的解决方案是确保关闭不保留element

最新更新