您的位置:首页 > Web前端 > JavaScript

理解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还是能在外面的作用于起作用的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: