为了账号安全,请及时绑定邮箱和手机立即绑定

输出为什么是2。

输出为什么是2。

哆啦的时光机 2019-03-13 17:19:58
似乎与闭包有关,求讲解。function test() {    var num = 1;    var t2 = function() { console.log(num); }    num++;    return t2;}var t=test();t();
查看完整描述

2 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

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


查看完整回答
反对 回复 2019-03-21
?
FFIVE

TA贡献1797条经验 获得超6个赞

是的,闭包问题

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


查看完整回答
反对 回复 2019-03-21
  • 2 回答
  • 0 关注
  • 616 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号