请问一下。function作用域链中保存的变量i为什么是10?。
http://www.cnblogs.com/mrzl/p/4415149.html
会有点难懂 敲下代码就差不多了
在for循环中,只是为每一个数组元素声明了函数,而没有调用。当调用的时候变量 i 已经变成了10
for(var i=0;i<10;i++){
//定义一个中间变量接收 i
var num=i;
result[num] = function (){
return num;
}
}
for(var i=0;i<10;i++){
result[i] = function (num){
return num;
}(i);//使用闭包将 i 传入function中
}
由于异步的问题,所以每次的时候最后都是10,如果你是想要实现块级作用域的,我推荐你使用;let来代替var。mdn上有说明,你可以去试试