首页 > Web开发 > 详细

js闭包的理解与用法

时间:2015-06-17 19:41:36      阅读:205      评论:0      收藏:0      [点我收藏+]

js回收机制:当一个函数全部执行完毕或者返回了值的时候,函数里面的变量会被清除回归到初始状态。

 

在某种情况:

js这样的回收机制就会引出一个问题,当一个函数被执行完毕后cg了,然而在函数外的一个变量需要用调用该函数里面的值时就不能有想要的效果了

 

例子:

分析

for循环第一次 i 等于0的时候,传递给result的值是0,但是第二次执行时候result被cg了,i没记住值0,i直接变1了,下一次也一样。

 1 var result=[];
 2 function foo(){
 3     var i= 0;
 4     for (;i<3;i=i+1){
 5         result[i]=function(){
 6             alert(i);
 7         }
 8     }
 9 };
10 foo();
11 
12 result[0](); // 3
13 result[1](); // 3
14 result[2](); // 3

使用闭包:

(function(){

alert(i);

})()

当js执行完i=0时,

result[0]=0这个值被保存在内存中不释放。。。。
 1 var result=[];
 2 function foo(){
 3     var i= 0;
 4     for (;i<3;i=i+1){
 5         result[i]=(function(){
 6              alert(i);
 7         })();
 8     }
 9 };
10 foo();
11 result[0](); // 0
12 result[1](); // 1
13 result[2](); // 2

这个例子比较经典。

js闭包的理解与用法

原文:http://www.cnblogs.com/fujinzhao/p/4584069.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!