function addHandler() {
var el = document.getElementById('el');
el.onclick = function() {
this.style.backgroundColor = 'red';
}
}
上面的代碼包含在Mozilla blog post on JavaScript中,並聲明上述代碼會導致內存泄漏。JavaScript內存泄漏說明
有人能解釋它比:
由於厄爾尼諾參考無意中陷入了匿名內部函數創建關閉。這會在JavaScript對象(函數)和本機對象(el)之間創建循環引用。
謝謝!
答案是,當它們被創建時,所有關閉都會保持與父母的鏈接。因此'onclick'的閉包引用'el',它又引用'el'? – tgandrews 2012-02-09 09:05:38
在你的問題代碼,onclick函數有一個鏈接到其父,因此有權訪問'el'變量。在函數內部,'el'變量等同於'this',因此你有一個小圓圈。 – japrescott 2012-02-09 09:13:16