• 闭包中匿名函数什么时候调用?


    来看看这段代码

                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. 在上述情况下调用非匿名函数,会一起执行.

  • 相关阅读:
    四则运算3.2
    第二周进度条
    构建之法阅读笔记02
    四则运算2
    第一周进度条
    构建之法阅读笔记01
    四则运算 Python
    第一周第二周学习进度条
    《构建之法》学习中疑问
    小学四则运算1.0
  • 原文地址:https://www.cnblogs.com/maxaimee/p/6517306.html
Copyright © 2020-2023  润新知