特点:
1.函数嵌套函数
2.内部函数可以引用外部函数的参数和变量 不会被垃圾回收机制回收
好处:
1.希望一个变量长期驻扎在内存中
2.避免全局变量的污染
3.私有成员的存在
用法:
1.模块化代码
var aaa=(function(){
var a=1;
return function(){
a++;
alert(a);
}
})()
aaa();//2
aaa();//3
//模块化模型
var aaa=(function(){
var a=1;
function bbb(){
a++;
alert(a);
},
function ccc(){
a++;
alert(a);
}
return {
b:bbb,
c:ccc
}
})()
aaa.b();//2
aaa.c();//3
2.循环中直接找到对应元素的索引
window.onload=function(){
var aLi=doxument.getElementByTagName('li');
for(var i=0;i<aLi.length;i++){
//写法一
(function(){
aLi[i].onclick=function(){
alert(i);
}
})(i);
//写法二
aLi.onclick=(function(){
return function(){
alert(i);
}
})(i)
}
}
需要注意的地方:
1.在IE中会引发内存泄漏(当页面跳转的时候,变量不会释放,使得CPU一直在累加。只有关闭浏览器 才会释放)
window.onload=function(){
var oDiv=document.getElementById('div1');
oDiv.onclick=function(){
alert(oDiv.id);
}
//解决方法一
window.onunload=function(){
oDiv.onclick=null;
}
//解决方法二
var id=oDiv.id;
oDiv.onclick=function(){
alert(id);
};
oDiv=null;
}