2012-06-30 122 views
11

MDN states:使用继续在do-while循环

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

我不确定为什么下面这段代码不能像我所期望的那样工作。

do { 
    continue; 
} while(false); 

即使while条件false,我希望它永远运行,因为continue跳朝块,它会立即重新执行continue的启动等但是不知怎的,一个迭代后循环终止。它看起来像continue被忽略。

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

+1

隐含满足条件。如果条件不符合,则不会有下一次迭代。 – 2012-06-30 13:25:11

+1

我错过了。我想我被源代码的顺序误导了。 (我认为'继续'会在源代码中“跳起来”)。 – pimvdb

+1

它*看起来就是这样,特别是如果你使用语句标签。 'TOP:do {continue TOP; } while(false)' – 2012-06-30 13:33:17

回答

7

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

这似乎打在继续,再破的是迭代的运行检验条件。由于条件是错误的,它会终止。

2

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

4

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

因为你正在做的while(false)没有下一次迭代

6

continue不跳过检查while(false)但简单地忽略括号内代码的其余部分。

4

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

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

1

我希望它永远运行,因为继续跳跃朝着 块

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