我只是想知道为什么控制台在记录数组内容时会读取[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);
};
答案 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