【发布时间】:2015-05-28 03:26:55
【问题描述】:
经过Mozilla's A re-introduction to JavaScript,以下代码导致内存泄漏:
function addHandler() {
var el = document.getElementById('el');
el.onclick = function() {
el.style.backgroundColor = 'red';
};
}
由于el 没有在onclick 函数内部被引用,以下修改后的代码会不会导致内存泄漏?
function addHandler() {
var el = document.getElementById('el');
el.onclick = function() {
this.style.backgroundColor = 'red';
};
}
【问题讨论】:
-
如果这就是你要问的,你仍然在柯里化一个变量,在这种情况下是
this。还要确保您了解this和self之间的区别。 -
谢天谢地,很快将不再有 Internet Explorer。现在的浏览器可以文明地处理垃圾回收了。
-
该代码仅导致 IE 泄漏,即多年前撰写本文时出现的 IE。别担心。
标签: javascript memory-leaks closures