1.什么是闭包
函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制给收回function a(x){ var y=1; function b(){ alert(x); alert(y); }}a()js中的垃圾回收机制function aa(){ var a=1;}aa();
2.闭包有什么好处?应用在那里
好处:1.希望一个变量长期停留在内存中 2.可以避免全局变量的污染var a=1; function aaa(){ a++; alert(a); } 改进 function aaa(){ var a=1; return function(){ a++; alert(a); } } var b=aaa(); b(); b();
3.私有成员的存在
var aaa=(function(){ var a=1; function bbb(){ a++; alert(a); } function ccc(){ a++; alert(a); } return { b:bbb, c:ccc } })()
//应用
1.模块化代码 2.在循环中找到对应元素的索引- 111
- 222
- 333
3.闭包需要注意的地方
在IE下有内存泄漏window.οnlοad=function(){ var odiv=document.getElementById("div1"); odiv.οnclick=funciton(){ alert(odiv.id); } //第一种方法 window.οnunlοad=function(){ odiv.οnclick=null; } //第二种方法 var odiv=document.getElementById("div1"); var id=odiv.id; odiv.οnclick=function(){ alert(id); } odiv=null;}