2014-02-22 101 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