javascript - 创建函数数组

标签 javascript arrays function

我正在尝试创建一个包含函数的数组。棘手的部分(至少对我来说)是从数组中创建这些函数。

问题说明

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;
}

演示:http://jsbin.com/hevete/1/edit?js,console

关于javascript - 创建函数数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590643/

相关文章:

python - 从元组列表到数组,第二行成为标题

javascript - 如何获取/读取 Chrome 中关于 :flags? 的标志值

javascript - TypeScript 类到 JSON

javascript - 错误提示函数未定义

c++ - 数组类型不可赋值

swift - 错误调用函数(无法使用实例成员)

javascript - 指令不会在 AngularJS 中的选项卡选择/页面滚动时触发

javascript - 运行函数几次后未定义索引

c - 在C中的函数调用之间保存一个值

r - 在 R 中跨动物园对象的行应用函数