16

MDN 声明:

当您continue不带标签使用时,它会终止最里面的封闭while, do-whileorfor语句的当前迭代,并在下一次迭代中继续执行循环。

我不确定为什么下面的代码不能按我的预期工作。

do {
  continue;
} while(false);

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

循环continue中如何工作?do-while

4

7 回答 7

12

看看这个 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() );​

它似乎达到了继续,然后退出该迭代以运行检查条件。由于条件为假,因此终止。

于 2012-06-30T13:27:08.860 回答
9

continue不跳过检查while(false),而只是忽略括号内的其余代码。

于 2012-06-30T13:23:41.000 回答
5

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

既然你在做while(false),就没有下一次迭代

于 2012-06-30T13:23:02.157 回答
4

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

由于一个false条件,没有下一次迭代 - 所以整个循环完成。

于 2012-06-30T13:23:51.297 回答
3

在 continue 之后,循环条件被评估,因为它是 false,循环将终止。

于 2012-06-30T13:22:51.287 回答
3

我希望它永远运行,因为 continue 跳转到块的开头

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

于 2012-06-30T13:40:20.710 回答
1

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

如果你替换while(false)while(true),你会得到一个无限循环。

do {
  continue;
} while(true);

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

在您的情况下,您的条件是错误的,因此它终止了循环。如果那个条件是true,它将在循环的开始处继续。

于 2020-06-08T18:56:58.163 回答