理解js闭包
2013-01-17 19:49
302 查看
函数定义时的作用域链到函数执行时依然有效。
var uniqueInteger = (function(){
var counter = 0;
alert("counter:"+counter);
return function (){return counter++;}
}());
如上面代码,变量返回的是一个函数,而函数的作用是将局部变量count自增1;
uniqueInteger会自动执行,所以上面代码等价于下面
var uniqueInteger =function (){return counter++;}
然而counter是函数内部的变量 , 外部是不能正常访问的。
对,但返回的函数所指向的一个变量会绑定外面的对象,即counter也会跟着绑定到外面的对象,所以counter还是有效。
而初始化的function里面的counter的引用会被回收。
综上,counter还是能在外面的作用于起作用的。
var uniqueInteger = (function(){
var counter = 0;
alert("counter:"+counter);
return function (){return counter++;}
}());
如上面代码,变量返回的是一个函数,而函数的作用是将局部变量count自增1;
uniqueInteger会自动执行,所以上面代码等价于下面
var uniqueInteger =function (){return counter++;}
然而counter是函数内部的变量 , 外部是不能正常访问的。
对,但返回的函数所指向的一个变量会绑定外面的对象,即counter也会跟着绑定到外面的对象,所以counter还是有效。
而初始化的function里面的counter的引用会被回收。
综上,counter还是能在外面的作用于起作用的。