2

我的困惑源于这个带有标签的示例:

myLoop : while (expression) {
    continue myLoop;
}

以及一般标记语句的语法:

identifier : statement

示例中究竟标记了什么?

不是整个代码块:

while (expression) 
    statement

被认为是一个单一的陈述?还是它while(expression)本身就是一个声明?还是while声明本身?

为什么不是全部:

while (expression) {
    continue myLoop;
} 

标记在myLoop而不只是while(expression)。或者这是否正在发生?

4

2 回答 2

2

我以前从未见过标记的 while 循环,但根据这个http://james.padolsey.com/javascript/looping-in-javascript/被标记的整个 while 循环。

它的用途是打破一个特定的循环,方便使用循环中的循环,例如(取自链接的示例)

myOuterLoop : while (condition) {
 myInnerLoop : while (condition) {
    if (whatever) {
        break myOuterLoop;
    }
    if (whatever2) {
        break; // Same as 'break myInnerLoop;'
    }
 }
}
于 2012-06-26T07:44:10.367 回答
2

被标记的不是代码块,它只是一个特定的行。所以无论你的标签myLoop在哪里,写continue myLoop就像在说“跳转到那个地方并继续执行”。

但实际上,在这个例子中:

myLoop : while (expression) {
    continue myLoop;
}

标签的使用完全是多余的。你可以这样写,效果是一样的:

while (expression) {
    continue;
}

这是因为continue默认情况下意味着,转到循环下一次迭代的开头。

于 2012-06-26T07:41:53.787 回答