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

一个经典闭包问题

一个经典闭包问题

繁星coding 2018-09-22 11:10:11
为什么结果是是3而不是2呢
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

把闭包的概念代进去看吧:
函数内部嵌套函数——>
就是for实现的定义在数组上的函数。

在外部引用函数内部的局部变量——>

var arr = F();//获得了包含三个函数的数组arr[0]();
arr[1]();
arr[2]();//这三个函数就实现了在函数外部引用函数内部的变量

结果为3的原因——>
因为js唯一的局部作用域就是函数,因而F中的for循环并没有将i作为局部变量传到那三个函数中去,因此那三个函数依然是引用的F中的i,在循环体结束时,i的值递增到了3,因此在整个F环境下i的值都为3了,所以在外部引用到arr中的任何一个函数,都是对这个i的引用,因此所有的值都为3。


查看完整回答
反对 回复 2018-10-30
  • 1 回答
  • 0 关注
  • 540 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信