3 回答
TA贡献1828条经验 获得超13个赞
没毛病result
就是这样的
[function() {return i;}, function() {return i;}, function() {return i;}]
TA贡献1797条经验 获得超6个赞
看一个函数,首先关注的是函数的参数和返回值。
createFunction()这个函数没有参数,return的是一个数组。
result[0] = function(){}
result[1] = function(){}
result[2] = function(){}
.
.
.
result[9] = function(){}
所以显示result这个数字的每一项,都是一个匿名函数,里面的匿名函数return i
如果你去尝试调用里面的任意一个匿名函数,你会痛苦的发现,return回来的结果都是10...
改成这样,就是你想要的
function createFunction() {
var result = new Array();
for (var i = 0; i < 10; i++) {
result[i] = (function() {
return i;
})(i)
}
return result;
}
var arr = createFunction();
console.log(arr);
或者用ES6的let
function createFunction() {
var result = new Array();
for (let i = 0; i < 10; i++) {
result[i] = i
}
return result;
}
var arr = createFunction();
console.log(arr);
添加回答
举报