0

我知道我可以简单地while为此编写一个循环..

我只是想知道如何通过argument这样的:

   function i(a,z){

      for (a; a<2; z){

          //do something...

      }
   }

我试过

    i(0,a++);
    i(0,'a++');
    i(0,a=a+1);


    var z = "a= a+1";
    i(0,z);

一切都没有奏效。


​[更新]

我知道我可以将功能更改为

   function i(a,z){

      for (a; a<2; a=a+z){

          //do something...

      }
   }

然后

  i(0,1);

但我在这里想知道的是如何在a=a+z不更改函数的情况下将其作为参数传递...

4

3 回答 3

4

也许你想要这个变种?

function i(start, end, delta){

      for (var i = start; i<end; i += delta) {

          //do something...

      }
}

用它i(0, 10, 1)

于 2012-05-09T09:14:10.657 回答
0

我不确定我是否理解正确,但我想你会想要这样的东西:

function i(a, z){
    for (a; a < 2; a = z(a)){
        //do something...
    }
}

然后你这样称呼它:

i(0, function(a) { 
     a++; 
     return a;
});

请注意,它与您所拥有的非常相似,只是 for 的最后一部分是一个函数。

于 2012-05-09T09:16:02.123 回答
0
function i(o){
    for (; o.a<2; o.z()){
        //do something...
        console.log('x');
    }
}
var o = {
    a:0, 
    z:function(o) {
        this.a++
    }
};

i(o);
于 2012-05-09T09:24:51.103 回答