我经常在第三方JavaScript代码中看到:
var el = document.getElementById(elementId);
对象通常是无效的,并且沿着此操作发表评论说它是针对IE完成的:
el = null; // IE
真正的目的是什么?关于那个的任何资源?
答案 0 :(得分:6)
通过修改引用,它们打破了DOM对象和JavaScript对象之间的相应循环依赖关系,这些对象由旧IE中的不同子系统控制(因此不可能被垃圾收集)。
例如:
var el = document.getElementById(elementId);
el.onclick = function () { // here the cyclic reference is created
/...
};
JavaScript子系统现在具有对el
元素的引用,DOM子系统(el
元素)具有对JavaScript对象的引用(该函数加上它关闭的内容)。 / p>
但是,如果您通过addEventListener
添加听众,则不必担心。
要了解有关常见内存泄漏缺陷的更多信息,请参阅http://www.ibm.com/developerworks/web/library/wa-memleak/。