关于循环和继续的问题

时间:2010-02-10 16:48:41

标签: javascript loops

这实际上是将循环命名为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:吗?如果是这样,你能说出什么呢?任何关于为什么命名东西的参考都有用吗?

4 个答案:

答案 0 :(得分:8)

是。当您将循环嵌套在另一个循环中并且希望继续外部循环时,这非常有用。 Here's a page on MDC关于它。因此,在您的情况下,在i = 2循环期间,如果在j循环内,您说continue nextLoop,它将跳出j循环,执行{ {1}}递增,并继续i

i = 3与标签一起使用通常不是良好做法;它可以表明逻辑需要重构。但它在语法上是完全有效的,我希望有人会在一个他们认为绝对必要的例子情况下加入。

编辑回答您的编辑,循环的标签(名称)为continue(不带冒号):您可以标记语句,然后将这些标签用作{{的目标1}}和nextLoop。查看the spec了解详情。典型的用法是在示例中标记循环,并continuebreak标记循环,但请注意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++;