将函数推送到数组中的数组日志'undefined'

时间:2014-02-22 16:01:22

标签: javascript

我只是想知道为什么控制台在记录数组内容时会读取[undefined, undefined, undefined]

这是代码,我想我希望控制台将数组的内容记录为[runIt(1), runIt(2), runIt(3)]

var myArr = [];

myArr.push( runIt(1) );
myArr.push( runIt(2) );
myArr.push( runIt(3) );
console.log(myArr);

function runIt (num) {
    console.log(num);  
};

1 个答案:

答案 0 :(得分:3)

你没有推动这些功能,你正在推动调用这些功能的结果。

如果你想推送调用“runIt”的函数,你必须创建它们:

myArr.push( function() { runIt(1); } );

你可以制作一个“runItRunner”功能:

function runItRunner( arg ) {
  return function() {
    runIt( arg );
  };
}

然后:

myArr.push( runItRunner(1) );
myArr.push( runItRunner(2) );
// etc