JavaScript中的闭包

 

 

 1 /*
 2     闭包:
 3         外函数返回一个内函数,内函数用到外函数的局部变量,
 4         这种情况下,外函数运行结束后,不会回收临时变量资源,会留给内函数使用。
 5                 
 6 */
 7 
 8 //外函数里 返回一个内函数,内函数用到外函数的临时变量x
 9 //外函数结束时候,会把x绑定给内函数,因为内函数会用到
10 function enclosure( x ){
11     return function(y){
12         x+= y;
13         return x;
14     };
15 };
16 
17 //在这里用 用e接收了一个绑定x是10的内匿名函数,
18 e = enclosure(10);
19 // 之后再调用这个内函数的时候,每次都修改了同一个x,因为他们的闭包变量是被同一次创建的
20 alert(e(1));    //11
21 alert(e(2));    //13  
22 
23 
24 //这里连续两次创建新的闭包变量和内部函数,所以使用的不是同一个闭包变量
25 alert( enclosure(10)(1) );    //11
26 alert( enclosure(10)(2) );    //12

 

 

原文地址:https://www.cnblogs.com/Lin-Yi/p/7427149.html