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

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

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题