这是《JavaScript高级程序设计》181页一个闭包的例子:function createFunctions(){ var result = new Array();
for(var i = 0; i < 10; i++){
result[i] = function(){ return i;
}
} return result;
}结果并不是每个函数都返回自己的索引值,而是每个函数都返回10,这是为什么?其中书中这段代码上方一段文字种有这么一句话:别忘了闭包所保存的是整个变量对象,而不是某个特殊变量。请问这句话又是什么意思?谢谢各位
1 回答
![?](http://img1.sycdn.imooc.com/545868b60001587202200220-100-100.jpg)
翻阅古今
TA贡献1780条经验 获得超5个赞
i
变量只有一个,保存在作用域链中没有被销毁(因为闭包还在使用),所以,results[i]
中每一个函数中的i
变量始终都指向同一个变量。所以在for
循环以后,i
变量就变成了10
,当执行闭包的时候,每一个函数去作用域链上找i
变量,得到的结果就是10
添加回答
举报
0/150
提交
取消