循环引用导致内存泄露的一个例子:
function assignHandler(){
var element = document.getElementById('div');
element.onclick = function(){
alert(element.id);
};
}
上面的函数创建了一个div元素和其函数onclick之间的循环引用。值得注意的是函数闭包会引用包含它的函数的整个活动对象。因此有必要把element指空。element指空实际是去除了函数对元素的引用。
正确的方式:
function assignHandler(){
var element = document.getElementById('div');
var id = element.id;
element.onclick = function(){
alert(id);
};