Javascript for循环,函数中的索引变量

时间:2010-09-03 10:28:33

标签: javascript

我正在试图弄清楚如何在for循环中生成函数。 我有:

for (var i = fir_0_f.length - 1; i >= 0; i--){
  var next = i+1;
  var N = i;
  // Attemps
      //goal0_[i](next,N);
      //eval('goal0_'+i+'('+next+', '+N+')');
}; 

也做了一些搜索。 []期望一个字符串,eval()是B.A.D的做法。还有其他方法吗? 如何在以后设置每个功能的超时?所以他们会连续运行吗?

非常感谢!

3 个答案:

答案 0 :(得分:4)

在JavaScript中,您可以使用函数表达式来构建函数数组:

var goals = [];

goals.push((function (param1, param2) {
   // your code for the first function
}));

goals.push((function (param1, param2) {
   // your code for the second function
}));

// ... etc

然后在你的for循环中,你可以简单地将你的函数作为数组的元素引用:

goals[i](next, N);

<强>更新

要在彼此之间延迟调用函数,您必须更改循环逻辑。不要使用for循环,而是立即调用第一个函数,然后在运行之后,使用setTimeout()调用第二个函数。

答案 1 :(得分:1)

for (var i = fir_0_f.length - 1; i >= 0; i--){
  var next = i+1;
  var N = i;
  setTimeout('goal0_'+i+'('+next+','+N+')', 0);
}

注意:循环不会捕获goal0_ i 引发的错误。 我在Firefox中注意到了这种行为。 这意味着以下内容无法按预期工作:

try{
   setTimeout(function_throwing_error, 0);
}
catch(e){
   alert("I kill you!");
}

答案 2 :(得分:0)

对于全局函数,您可以这样做:

window['goal0_'+i](next, N);