一个经典闭包问题

https://img1.mukewang.com/5bd7b4b200017b2f05880850.jpg

为什么结果是是3而不是2呢

繁星coding
浏览 541回答 1
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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript