我有一个函数,它的索引作为参数:动态生成一个函数数组集成一个参数?
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:刚刚做了,产生了一个未定义的错误,更新了我的问题。抱歉。 –