zoukankan      html  css  js  c++  java
  • 闭包中匿名函数什么时候调用?

    来看看这段代码

                var n = 0;
                function move(x) {
                    return function () {
                        n = x;
                    }
                }
                move(30);
                alert(n);
    

    猜一下这个窗口会弹出多少? 是30 还是0?

    答案是 0

    为什么是这样呢, 让我们修改一下代码就明白了.

        var n=0;
        function move(x) {
            return function () {
                n=x;
    
            }
        }
        alert(move(30))
    

    这个时候函数没有立刻运行.因为闭包返回的函数不会立刻调用.而是当你调用的时候才会调用. 所以返回了一个没有运行的函数体

              var n=0;
              function move(x) {
                  return function () {
                      n=x;
                  }
              }
              result=move(30)();
              alert(n);
    
    • 当这个时候弹出的值就是
    • 因为这个时候move()() 真正调用了内部的匿名函数.

    总结来说,闭包中的匿名函数,如果没有调用.只会返回一个函数体.

    但是只针对闭包中的匿名函数,如果是一个普通的函数.会直接运行,如下代码


            function cons() {
                console.log("I am function 2")
            }
            function move2() {
               console.log( "I am function 1")
                return cons()
            }
            move2();
    

    会在控制台输出 I am function 1 和I am function 2. 在上述情况下调用非匿名函数,会一起执行.

  • 相关阅读:
    2、消失的路由,源码的解析基础
    1、v1 与 v2的比较
    uwp 之后台音频
    uwp 之多媒体开发
    UWP 动画之路径
    uwp 动画之圆的放大与缩小
    uwp 中的动画
    C# 输入法
    uwp 之资源的访问
    uwp 之吐司 toast
  • 原文地址:https://www.cnblogs.com/maxaimee/p/6517306.html
Copyright © 2011-2022 走看看