我正在尝试创建一个包含函数的数组。棘手的部分(至少对我来说)是从数组中创建这些函数。
问题说明
var foo = ["1", 2, 3, 4, "5"];
现在,我需要创建一个函数来创建返回这些值的函数:
bar[0](); //1
bar[3](); //4
到目前为止我的代码
function create_functions_array(array) {
var functions_array = new Array;
for(var i=0; i<array.length; i++)
functions_array[i] = function() {console.log(array[i])};
return functions_array;
}
问题是,如果我在 console.log 中(在我的函数中)放置任何值,例如:
functions_array[i] = function() {console.log('aaa')};
它将在控制台中记录“aaa”。但是当我尝试使用传递给函数的数组变量时,它会记录“未定义”。
我尝试调用此函数的方式是
var bar = create_functions_array(foo);
你能解释一下我做错了什么吗?
最佳答案
function create_functions_array(array) {
var functions_array = new Array;
for(var i=0; i<array.length; i++) {
functions_array[i] = function (i) {
return function() {
return array[i];
};
}(i)
}
return functions_array;
}
关于javascript - 创建函数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590643/