2012-05-09 2 views
0

Я знаю, что могу просто написать while петлю для этого ..Передача аргумента в цикл

Я просто интересно узнать, как пройти argument так:

function i(a,z){ 

     for (a; a<2; z){ 

      //do something... 

     } 
    } 

I исп.

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


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

и все не работает.


[UPDATE]

Я знаю, что я могу изменить функцию в

function i(a,z){ 

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

      //do something... 

     } 
    } 

затем

i(0,1); 

но то, что я хочу знать, вот как Я могу передать это a=a+z как a rgument без изменения моей функции ...

+0

Вы не можете ... по крайней мере, не точно, точно так. * без изменения моей функции *: Нет способа. –

+0

Если исправлено '2', весь подход кажется немного ошибочным, хотя ... он не дает вам большой выбор для третьей части (' a + = 1'), так зачем же проходить эту проблему? –

+0

@FelixKling Да, я знаю .. Есть много способов изменить его. Но мне просто интересно, как передать аргумент 'a = a + 1'. –

ответ

0

Я не уверен, если я правильно понимаю, но я предполагаю, что вы хотели бы что-то вроде этого:

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

Тогда вы называете это так:

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

Обратите внимание, что это очень похоже на то, что у вас есть, за исключением того, что последняя часть является функцией.

+1

'a ++' не повлияет на внешний 'a', хотя ... вам придется его вернуть:' for (a; a <2; a = z (a)) ' –

+1

Идея хорошо, но в его нынешнем виде это приводит к бесконечному циклу. – kapa

+0

Моя ошибка. Я не только не понял вопроса, я бросился дать неверный ответ. Способ сделать это будет похож на Felix Kling, описанный в его комментарии. –

4

Возможно, вам нужен этот вариант?

function i(start, end, delta){ 

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

      //do something... 

     } 
} 

Используйте его i(0, 10, 1)

+0

Нет .. Мне просто интересно, как передать 'a = a + 1' в' for loop() '.. –

+0

Тогда вы можете использовать answer http://stackoverflow.com/a/10513109/1223007 –

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); 
Смежные вопросы