(function(){
alert(1);
})();
按照正常的写法会出现i都为3因为for循环很快结束了
window.onload = function(){var aLi = document.getElementsByTagName('li');
方法1: for(var i=0;i<aLi.length;i++){
(function(i){
aLi[i].onclick = function(){
alert(i);
};})(i);
方法2:
for(var i=0;i<aLi.length;i++){
aLi[i].onclick = (function(i){
eturn function(){
alert(i);
}
})(i);
}
};
通过吧i放在函数中传进去这样i会保留在内存中i,因此结果就是0,1,2
简单来讲就是:方法套方法,不影响外面的变量,方法里面的变量会被释放掉。
//IE下会引发内存泄漏
/*window.onload = function(){
var oDiv = document.getElementById('div1');
oDiv.onclick = function(){
alert(oDiv.id);
};
window.onunload = function(){
oDiv.onclick = null;
};
};*/
window.onload = function(){
var oDiv = document.getElementById('div1');
var id = oDiv.id;
oDiv.onclick = function(){
alert(id);
};
oDiv = null;
};