输出为什么是2。

似乎与闭包有关,求讲解。

function test() {
    var num = 1;
    var t2 = function() { console.log(num); }
    num++;
    return t2;
}
var t=test();
t();
阅读 1.5k
2 个回答

闭包的意思就是虽然是在外面执行,但执行环境仍然是定义它的地方。所以外面的t()实际上相当于在return t2;这一句的位置上执行的。结果是什么是不是一眼就看出来了。

是的,闭包问题

t函数的功能是打印num,这个num的上下文是test函数,注意,不是window,因为t所指向的函数是在test函数内部创建的,test内部的num初始值为1,后经过一次运算变成2,所以之后运行t函数的时候,所打印的就是2

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