Подтвердить что ты не робот

Использование продолжения в цикле do-while

Состояние MDN:

Когда вы используете continue без метки, он завершает текущую итерацию самого внутреннего приложения while, do-while или for и продолжает выполнение цикла со следующей итерацией.

Я не уверен, почему следующий фрагмент кода не работает, как я ожидаю.

do {
  continue;
} while(false);

Даже если условие while равно false, я ожидаю, что он будет работать вечно, так как continue перескакивает в начало кадра, что сразу же запускает continue и т.д. Однако каким-то образом цикл заканчивается после одна итерация. Похоже, что continue игнорируется.

Как работает continue в цикле do-while?

4b9b3361

Ответ 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 не переходит в начало блока, он перескакивает до конца блока.