javasript闭包详解
2012-04-01 10:07 wanqijian 阅读(121) 评论(0) 收藏 举报在看javascript书的时候,有提到闭包,但是我对闭包又不了解,所以查了资料,就了解一二,与君共享。
首先介绍下javascrip的gc(垃圾回收机制)什么情况下会将对象给回收了:
如果一个对象不再被引用,那么这个对象就会给GC回收。如果两个对象存在互相引用,而且不再被其他所引用,那么这两个互相应用的对象也会被回收。
然后在看一个闭包的例子:
function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
var c = a();
c();
特点:b嵌套在a内,a返回b。
这个例子中,调用函数c(),c是指向a的,a返回的是b,b又对a中的i进行了操作,所以他们的关系式,函数b被函数a,c所引用,i被a和b所引用,所以最后,变量i,不会被GC回收掉。因此,i一直存在。
函数a的内部函数b,被函数a的对象所引用,就产生了个闭包。
浙公网安备 33010602011771号