走进闭包1

闭包有些复杂而且工作中也非常少的用到,但是面试官们却非常喜欢考,为什么?因为够复杂,能够体现面试人员是个高水平的,换句话说类似于本科毕业证一样的存在。尽管知道并不是所有大学生都对这个工作理解很深,但是至少大学生对该工作理解较深的人数,比没上大学的要多得多,这倒是事实。

而这个问题也是差不多的存在,知道闭包的总比不知道的要厉害,尽管它自身没什么卵用。

下面就是一个简单的闭包:

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6     </head>
 7     <body>
 8         
 9         <script>
10         //闭包可以访问函数的局部变量,并让其长期驻留内存
11             function a(){
12                 var i=0;
13                 return function(){
14                     return ++i;
15                 }
16             }
17             var fun=a();
18             alert(fun());
19             alert(a()())
20     
21             
22             
23                     function fn1(num) {//发动,1
24                 alert(num);
25                 return function fn2() {//发动,没有参数,向上查找1
26                     alert(num);
27                     return function fn3(num) {//发动,传入参数3,返回3
28                         alert(num);
29                         function fn4() {//不发,加了return才会有返回值
30                             alert(num)
31                         }
32                     }
33                 }
34         
35         }
36         var fn2 = fn1(1);
37         fn2(2)(3)(4);
38 
39         </script>
40         
41     </body>
42 </html>

简单来说,就是在函数的返回值那一块再添加一个函数。

这个函数因为是属于上一个函数内部的,所以可以调用,获得其中的值,于是,如果将这个值返回的话,就可以做到:【外部变量,函数可以获得内部变量的值】,仅此而已的东西。

当然,目的尽管就这么多,但是起中国的花样也是不少的。

原文地址:https://www.cnblogs.com/thestudy/p/6282291.html