微信扫一扫打赏支持

javascript疑难问题---9、闭包执行问题

javascript疑难问题---9、闭包执行问题

一、总结

一句话总结:

闭包在执行的时候,如果和外部函数一起执行(比如fn1()()),可能会造成外部函数局部变量被重新赋初值的情况,可能造成结果不是我们预期,所以推荐大家调用匿名函数的方式是先执行外部函数,然后再执行内部函数(var fn3=fn1();fn3();)

 

 

 

 

二、闭包执行问题

博客对应课程的视频位置:9、闭包执行问题
https://www.fanrenyi.com/video/4/161

 

 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>闭包执行问题</title>
 6 </head>
 7 <body>
 8 <!--
 9 
10 闭包在执行的时候,如果和外部函数一起执行,比如( fn1()();),
11 可能会造成外部函数局部变量被重新赋初值的情况,
12 这样可能造成结果不是我们预期
13 
14 所以推荐大家调用匿名函数的方式是先执行外部函数,然后再执行内部函数
15 var fn3=fn1();
16 fn3();
17 
18 -->
19 <script>
20     function fn1() {
21         var a=10;
22         function fn2(){
23             console.log(++a);
24         }
25         return fn2;
26     }
27 
28     // var fn3=fn1();
29     // console.log(fn3);
30     // fn3(); //11
31     // console.log('两次函数执行之间');
32     // fn3(); //12
33     // fn3(); //13
34 
35     fn1()(); //11
36     fn1()(); //11
37     fn1()(); //11
38 
39 </script>
40 </body>
41 </html>

 

 

 
posted @ 2020-03-09 20:46  范仁义  阅读(132)  评论(0编辑  收藏  举报