码迷,mamicode.com
首页 > Web开发 > 详细

js闭包的理解与用法

时间:2015-06-17 19:42:10      阅读:212      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!