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>