我正在尝试创建一个包含函数的数组。棘手的部分(至少对我而言)是从数组中创建这些函数。
问题说明
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”。但是当我尝试使用传递给函数的数组变量时,它会记录“undefined”。
我试图调用此函数的方式是
var bar = create_functions_array(foo);
请你解释一下我做错了什么?
答案 0 :(得分:2)
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;
}