zoukankan      html  css  js  c++  java
  • 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>
     
  • 相关阅读:
    Cocos2d-x之绘制圆形
    Cocos2d-x之绘制填充矩形
    Cocos2d-x之绘制矩形
    Cocos2d-x之绘图API说明
    cocos2d-x之监听手机的物理按键
    cocos2d-x之加速度传感器
    cocos2d-x之多点触摸事件
    cocos2d-x之事件传递(onTouchBegan的返回值的作用)
    pickle
    配置文件
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/12450746.html
Copyright © 2011-2022 走看看