看书的时候很是不明白为啥变量老是五,经过认真思考的出一下理解:
function box() {
var arr = [];
for (var i = 0; i < 5; i++) {
arr[i] = function () {
return i;
};
}
return arr;
}
var b = box(); //得到函数数组,数组中存放的是5个方法,然后方法的返回值存放的是i执行最后一次的值。
执行最后的i++后,i=5了,arr[0...4]中存放的方法的返回值都变成5了,最后栈中的i=5销毁。
function box() {
var arr = [];
for (var i = 0; i < 5; i++) {
arr[i] = function () {
return i+"l";
};
}
alert(arr+"...."+arr[0]());//这里可以测试方法返回值都变成5了
return arr;
}
//alert(i)//这里可以知道栈里面的i值被销毁
var b = box(); //得到函数数组
来源: