2014-02-22 104 views
1

我只是想知道为什么当我登录数组的内容时控制台读取[undefined, 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); 
}; 

回答

3

你不是推的功能,你推的结果调用的功能。

如果你想要把那称之为 “runIt” 功能,你就必须让他们:

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

你可以做一个 “runItRunner” 功能:

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

然后:

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

非常感谢! – Mdd

+0

@Mdd欢迎您!祝你好运! – Pointy