刚接触到这个词,晕忽了许久。
1.闭包是在其词法上下文中引用了自由变量的函数。
2.如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被定义为闭包。
3.在实现深约束时,需要创建一个能显式表示引用环境的东西,并将它与相关的子程序捆绑在一起,这样捆绑起来的整体被称为闭包。
闭包!是不越看越晕啊,还不如直接用代码来说明:
例子1,创造一个函数。该函数内部的x是无法外部访问的。
var myfunc=function(){
var x=0;
return function(){
return x;
}
};
例子2:创造一个方法。
var addx=function(x) {
return function(y) {return x+y;};
}a=addx(8); //先定义x
alert(a(10));//运算8+10
结果:18
例子3,创造一个对象。x同样是无法外部访问的。注意最后一行的(),作用是马上调用构造出来的函数。
var myobj=function(){
var x=0;
return {
fun1:function(){alert(x+1);},
fun2:function(){alert(x+1);}
};
}();
例子4:利用闭包给attachEvent侦听函数增加参数
dom节点.attachEvent(”onclick”,onclickfun(arg1,arg2));
var onclickfun=function(arg1,arg2){
return function(){
alert(arg1);
alert(arg2); //代码块,arg1,arg2
}
}
Tags: Javascript

