明明是同一个函数,为什么调用的结果却不一样?

   <script>
        function f1() {
            var n = 999;
            function f2() {
                alert(n);
            }
            return f2;
        }
        var result =f1();
        console.log(result);
        console.log(f1())
        f1();
        result();
    </script>

img


结果是只有调用result才会弹出999,明明函数都是一样的,搞不懂为什么结果不一样,望各位指点!

result() 其实是等于f1()()也就是等于f2(),而f1()就是f2, f2是函数的定义,如果需要让他执行需要f2()才可以; 这就是为啥他俩不一样了。

result=f1()执行后,result为f1的内部函数f2,result()执行f2函数所以alert
执行f1()只是将f2返回,并没有执行,所以不会alert

改下面就会执行alert了
f1()()

有帮助麻烦点个采纳【本回答右上角】,谢谢~~有其他问题可以继续交流~