这实际上是将循环命名为nextLoop
吗?所以,当它显示continue nextLoop
时,它会立即回到顶部吗?
var total = 0;
nextLoop:
for ( var i = 0; i < 7; ++i ) {
for ( var j = 0; j < 6 ; ++j ) {
if ( i < 5 )
continue nextLoop;
total++;
}
total++;
}
total++;
document.write( total );
修改
这是命名循环nextLoop:
吗?如果是这样,你能说出什么呢?任何关于为什么命名东西的参考都有用吗?
答案 0 :(得分:8)
是。当您将循环嵌套在另一个循环中并且希望继续外部循环时,这非常有用。 Here's a page on MDC关于它。因此,在您的情况下,在i = 2
循环期间,如果在j
循环内,您说continue nextLoop
,它将跳出j
循环,执行{ {1}}递增,并继续i
。
将i = 3
与标签一起使用通常不是良好做法;它可以表明逻辑需要重构。但它在语法上是完全有效的,我希望有人会在一个他们认为绝对必要的例子情况下加入。
编辑回答您的编辑,循环的标签(名称)为continue
(不带冒号):您可以标记语句,然后将这些标签用作{{的目标1}}和nextLoop
。查看the spec了解详情。典型的用法是在示例中标记循环,并continue
或break
标记循环,但请注意continue
也适用于嵌套的break
语句 - 您可以标记它们喜欢循环,并从内部的一个案例中打破外部的一个。你甚至可以混合使用它们,这样你就可以在交换机中打破一个循环(标签名称空间对两者都是通用的)。
答案 1 :(得分:1)
确实如此。但你应该避免它。这是一种不好的做法,类似于go to
。使代码难以阅读,理解和意大利面条。
答案 2 :(得分:1)
是的,这是预期的行为。看看here
答案 3 :(得分:0)
其他语言让您突破选定数量的内部循环, 如果(!x)突破2;将在两步之后继续这个过程。
我见过有多个循环标签的复杂循环, 并继续调用特定的标签,但我同意它可以混淆逻辑。
通过在不使用continue的情况下编写循环,几乎总能提高循环的效率:
var total= 0;
nextLoop:
for (var i = 0; i < 7; ++i ){
for (var j = 0; j < 6 ; ++j ){
if(i>4) total++;
}
total++;
}
total++;