我有一個函數,它的索引作爲參數:動態生成一個函數數組集成一個參數?
function awesomeFunction(index) {
console.log(index); // does awesome stuff depending on the index
}
現在,我想動態地創建這樣的功能的陣列,每一個使用無參數在所有。以下是我心目中:
function generateAwesomeFunction(index) {
return function() {
console.log(index);
}
}
var awesomeArray = [];
for (var i=0 ; i<something ; i++) {
awesomeArray.push(generateAwesomeFunction(i));
}
在我的扭曲的心靈,輸出awesomeArray
應該包含的功能,這些都不需要任何參數,但所有這些做,因爲index
不同的東西在生成時在函數中是INTEGRATED。例如,下面的調用執行不同的代碼:
awesomeArray[0]();
awesomeArray[1]();
// and so on...
正在運行的例子是:
function awesomeFunction(index) {
console.log(index); // does awesome stuff depending on the index
}
function generateAwesomeFunction(index) {
return function() {
console.log(index);
}
}
var awesomeArray = [];
for (var i=0 ; i<5 ; i++) {
awesomeArray.push(generateAwesomeFunction(i));
}
awesomeArray[0](); // 0
awesomeArray[1](); // 1
awesomeArray[2](); // 2
// and so on...
問題:
- 它工作嗎? --->是!
- 有沒有更好的方式來生成該函數的數組?
'功能#bind'? – gcampbell
*它工作嗎?*你嘗試過嗎? –
@Matt Burland:剛剛做了,產生了一個未定義的錯誤,更新了我的問題。抱歉。 –