当你使用没有标签的
continue
时,它会终止最内层的while
,do-while
或for
语句的当前迭代,并继续执行循环下一次迭代。
我不确定为什么以下代码不能像我预期的那样工作。
do {
continue;
} while(false);
即使while
条件是false
,我希望它会永远运行,因为continue
会跳转到块的开头,它会立即再次执行continue
等等但不知何故,循环在一次迭代后终止。看起来continue
被忽略了。
continue
循环中的do-while
如何运作?
答案 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
,它将在循环开始时继续。