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

关于一个闭包的例子

关于一个闭包的例子

慕后森 2018-08-01 12:10:08
这是《JavaScript高级程序设计》181页一个闭包的例子:function createFunctions(){    var result = new Array();         for(var i = 0; i < 10; i++){         result[i] = function(){            return i;         }     }    return result; }结果并不是每个函数都返回自己的索引值,而是每个函数都返回10,这是为什么?其中书中这段代码上方一段文字种有这么一句话:别忘了闭包所保存的是整个变量对象,而不是某个特殊变量。请问这句话又是什么意思?谢谢各位
查看完整描述

1 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

i变量只有一个,保存在作用域链中没有被销毁(因为闭包还在使用),所以,results[i]中每一个函数中的i变量始终都指向同一个变量。所以在for循环以后,i变量就变成了10,当执行闭包的时候,每一个函数去作用域链上找i变量,得到的结果就是10

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

添加回答

举报

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