闭包的理解

JavaScript闭包是在另一个作用域中保存了一份它从上一级作用域或者作用域取得的变量(键值对),

而这些键值对是不会随上一级函数的执行完成而销毁的。

        function a(){
var i=0;
function b(){
alert(++i);
}
return b;
}
var c=a();
c();

这里,执行完var c=a()后,由于a()函数是return b的,因此 c实际上指向了函数b

b中用到了它的上一级变量i,因此,执行c()后,会弹出显示i的值,第一次为1,这里b()函数就形成了一个闭包。

因为:函数a外的变量c引用了函数a内的函数b

就是说:

当函数a的内部函数b被函数a外的一个变量引用时,就创建了一个闭包。

闭包的作用是:a执行并返回后,闭包使得js的回收机制不会收回a所占用的资源,

因为a的内部函数b的执行要依赖于a中的变量

posted @ 2012-03-05 17:55  猪弟  阅读(219)  评论(0)    收藏  举报