Использование продолжения в цикле do-while
Состояние MDN:
Когда вы используете continue
без метки, он завершает текущую итерацию самого внутреннего приложения while
, do-while
или for
и продолжает выполнение цикла со следующей итерацией.
Я не уверен, почему следующий фрагмент кода не работает, как я ожидаю.
do {
continue;
} while(false);
Даже если условие while
равно false
, я ожидаю, что он будет работать вечно, так как continue
перескакивает в начало кадра, что сразу же запускает continue
и т.д. Однако каким-то образом цикл заканчивается после одна итерация. Похоже, что continue
игнорируется.
Как работает continue
в цикле do-while
?
Ответы
Ответ 1
Проверьте этот jsFiddle: http://jsfiddle.net/YdpJ2/3/
var getFalse = function() {
alert("Called getFalse!");
return false;
};
do {
continue;
alert("Past the continue? That impossible.");
} while( getFalse() );
Кажется, что он ударил по продолжению, а затем вырвался из этой итерации, чтобы запустить условие проверки. Поскольку условие ложно, оно завершается.
Ответ 2
continue
не пропускает проверку while(false)
, а просто игнорирует остальную часть кода в скобках.
Ответ 3
Продолжает останавливать выполнение остальной части кода в блоке и переходит непосредственно к следующей итерации вашего цикла.
Поскольку вы выполняете while(false)
, следующая итерация не будет
Ответ 4
continue
снова не запускается по текущей итерации, но переходит к следующей (как указано в цитате MDN).
из-за условия false
, следующей итерации не будет, поэтому весь цикл будет завершен.
Ответ 5
После продолжения вычисляется условие цикла, поскольку оно ложно, цикл завершается.
Ответ 6
Я ожидаю, что он будет работать вечно, так как продолжение скачков к началу блок
continue
не переходит в начало блока, он перескакивает до конца блока.