这是什么:主要:for(...){...}做什么?

时间:2010-06-15 15:25:36

标签: javascript

我提起了NWmatcher source code进行了一些轻快的早上阅读,并注意到我以前在javascript中从未见过的奇怪代码:

main:for(/*irrelevant loop stuff*/){/*...*/}

此代码段可在第441行的compileGroup方法中找到(nwmatcher-1.1.1)

return new Function('c,s,d,h',
    'var k,e,r,n,C,N,T,X=0,x=0;main:for(k=0,r=[];e=N=c[k];k++){' + 
         SKIP_COMMENTS + source + 
    '}return r;'
);

现在我想出了main:自己在做什么。如果循环中有循环并希望跳到外循环的下一次迭代(不完成内部OR或外循环),则可以执行continue main。例如:

// This is obviously not the optimal way to find primes...
function getPrimes(max) {
    var primes = [2], //seed
        sqrt = Math.sqrt,
        i = 3, j, s;

    outer: for (; i <= max; s = sqrt(i += 2)) {
        j = 3;
        while (j <= s) {
            if (i % j === 0) {
                // if we get here j += 2 and primes.push(i) are
                // not executed for the current iteration of i
                continue outer;
            }
            j += 2;
        }
        primes.push(i);
    }
    return primes;
}

这叫什么?
是否有任何浏览器不支持它? 除continue以外还有其他用途吗?

2 个答案:

答案 0 :(得分:4)

这是labeled continue。您也可以使用labeled break。它是ECMAScript 3以来的标准。它的工作方式与in Java基本相同。

答案 1 :(得分:1)

这只是使用标签来控制流量的一个例子。它是标准的一部分,据我所知,所有浏览器都支持它。

至于其他用途,请详细了解您可以使用它做什么(除了continue,标签可以与break一起使用):

Tutorialspoint - JavaScript Loop Control with break and continue