• 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>
     
  • 相关阅读:
    Linux Shell脚本编程--Head/Tail命令详解
    Python学习笔记-抽象
    L2-020 功夫传人
    pat 抢红包
    pat 集合相似度
    pat 喊山
    hdu1029
    win10 , JAVA安装 环境搭建
    ZOJ2540 Form a Square
    ZOJ3180 Number Game
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/12450746.html
Copyright © 2020-2023  润新知