关于闭包的理解

来源:互联网 发布:怎么软件赚钱最快 编辑:程序博客网 时间:2024/06/03 06:46

这两天在苦苦钻研闭包,因为之前对闭包的接触并不多,于是大量在网上找资料。怕遗忘,登录博客,记录下来。

什么是闭包,记得刚学习JS的时候,说闭包就是外部调用内部函数的变量。楼主当时比较浮躁,就以为是个很简单的东西,也就没有深究,但是随着,写的代码多了,感觉闭包真的非常有用。到目前为止,用的最后就是匿名函数自调用。

首先看我的两个案例,作用域和执行顺序。

[javascript] view plaincopy
  1. <script>  
  2.      for (var i=0; i < 10; i++) {  
  3.            function aa(){  
  4.                alert(i);  
  5.            }  
  6.      };  
  7.      aa();//10  
  8.   
  9.   
  10.      for (var i=0; i < 10; i++) {  
  11.            function aa(){  
  12.                alert(i);  
  13.            }  
  14.             aa();//1...9  
  15.      };  
  16.        
  17. </script>  

第一个弹出的是10,for循环执行完了,才调用函数aa(),这个时候i刚好等于10,于是alert(i)这个i引用了此时的i=10;

第二个我们大家都知道,弹出的1...9,因为一边循环一边执行,这个我们应该都理解.第二个函数等同于下面这个匿名自调用函数.

[javascript] view plaincopy
  1. for (var i = 0; i < 10; i++) {  
  2.           (function(j){  
  3.             alert(j)  
  4.           })(i)  
  5.    };  

 其实上面这个已经叫做闭包了。

 我自己的理解什么是闭包:能够让外部函数访问内部函数变量的过程叫做闭包。

0 0
原创粉丝点击