闭包很容易发生无意识的内存泄露
一个函数没有执行, 那么内存存的只是最外层函数(对象)的引用;只要没有执行,代码里面有什么根本不用在乎。
闭包很容易发生无意识的内存泄露(循环引用,以前的问题,现在用标记清楚算法。via: MDN)。如下所示:
function addHandler() { 
    var el = document.getElementById('el'); 
    el.onclick = function() {        el.style.backgroundColor = 'red'; 
    } 
}  | 
这段代码创建了一个元素,当它被点击的时候变红,但同时它也会发生内存泄露。为什么?因为对 el 的引用不小心被放在一个匿名内部函数中。这就在 JavaScript 对象(这个内部函数)和本地对象之间(el)创建了一个循环引用。
可以使用 this。