在do-while循环中使用continue

时间:2012-06-30 13:20:15

标签: javascript loops iteration do-while continue

MDN states:

  

当你使用没有标签的continue时,它会终止最内层的whiledo-whilefor语句的当前迭代,并继续执行循环下一次迭代。

我不确定为什么以下代码不能像我预期的那样工作。

do {
  continue;
} while(false);

即使while条件是false,我希望它会永远运行,因为continue会跳转到块的开头,它会立即再次执行continue等等但不知何故,循环在一次迭代后终止。看起来continue被忽略了。

continue循环中的do-while如何运作?

7 个答案:

答案 0 :(得分:10)

看看这个jsFiddle:http://jsfiddle.net/YdpJ2/3/

var getFalse = function() {
  alert("Called getFalse!");
  return false;
};

do {
  continue;
  alert("Past the continue? That's impossible.");
} while( getFalse() );​

它似乎点击了继续,然后突破该迭代以运行检查条件。由于条件为假,它会终止。

答案 1 :(得分:7)

continue不会跳过支票while(false),只是忽略括号内的其余代码。

答案 2 :(得分:4)

继续停止执行块中的其余代码,并直接跳转到循环的下一次迭代。

由于您正在执行while(false),因此没有下一次迭代

答案 3 :(得分:4)

continue不会再次从当前迭代开始,而是跳到下一个迭代(如MDN引用中所述)。

因为false条件,没有下一次迭代 - 所以整个循环就完成了。

答案 4 :(得分:2)

在继续之后,评估循环条件,因为它是假的,循环将终止。

答案 5 :(得分:2)

  

我预计它会永远运行,因为继续跳到开始   块

continue没有跳转到块的开头,它会跳转到块的末尾。

答案 6 :(得分:1)

使用while(true)获得无限循环。

如果将while(false)替换为while(true),则会出现无限循环。

do {
  continue;
} while(true);

continue跳到该块的末尾,在do-while循环中,它将执行条件语句。

在您的情况下,您的条件为假,因此它终止了循环。如果该条件为true,它将在循环开始时继续。