为什么直接调用f1并没有去执行这个函数呢?

f1()这样写没有去执行f1函数 f1()()为什么要再执行一次才会去执行?大家能解释一下吗?

function f1(){
         var  a=1;
         var t=function(){
            a++;
         }
         return function(){
            console.log(a);
         }
}
f1()
阅读 2k
2 个回答
var func = f1(); // 你返回了一个函数,现在并没有执行
func() // 这时候才执行

你这个涉及到了闭包。函数里返回另一个函数,所以,当你调用f1()的时候,就进入到了f1这个函数体里面去执行了代码,并不是函数f1没执行,其实是执行了的,但是猜你想要的效果是能够在控制台看到a的值的输出,最开始说到函数f1返回值也是一个函数,所以要想看到输出a的值,你需要f1()().

推荐问题