2010-10-13 5 views
2

Возможно, это глупый вопрос, но есть ли способ вернуться к началу цикла?как вернуться в начало цикла for в javascript

Пример:

for(var i = 0; i < 5; i++) { 

    if(i == 3) 
     return; 

    alert(i); 
} 

Что можно было ожидать на других языках, что предупреждение вызвало бы в 4 раза, как так:

предупреждение (0); предупреждение (1); предупреждение (2); предупреждение (4);

, но вместо этого функция немедленно выходит, когда я равен 3. Что дает?

+3

Не могли бы вы привести пример «других языков»? –

+0

На каких языках вы думаете, где возвращение в середине цикла заставляет цикл продолжать? Это не так на любом языке, который я знаю. – Chuck

+1

C# не продолжает цикл - как только вы выполняете оператор return, функция сразу же выходит, как и в javascript. C# также использует оператор continue для потока выполнения, который вы пытаетесь выполнить. – JeremyDWill

ответ

17

Использовать continue вместо return.

Пример:http://jsfiddle.net/TYLgJ/

for(var i = 0; i < 5; i++) { 

    if(i == 3) 
     continue; 

    alert(i); 
} 

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

EDIT: документации ссылки, представленные @epascarello комментарии ниже.

+0

aha! Большое спасибо Патрику. – Darcy

+1

continue: https://developer.mozilla.org/en/JavaScript/Reference/Statements/continue return: https://developer.mozilla.org/en/JavaScript/Reference/Statements/return – epascarello

+0

@epascarello - Спасибо за добавив ссылки. : o) – user113716

5

Для чего это стоит, вы можете также назвать их:

OUTER_LOOP: for (var o = 0; o < 3; o++) { 
    INNER_LOOP: for (var i = 0; i < 3; i++) { 
    if (o && i) { 
     continue OUTER_LOOP; 
    } 
    console.info(o, ':', i); 
    } 
} 

выходы:

0 : 0 
0 : 1 
0 : 2 
1 : 0 
2 : 0