代码之家  ›  专栏  ›  技术社区  ›  David Murdoch

这是什么:主要:为(…)…做什么?

  •  2
  • David Murdoch  · 技术社区  · 16 年前

    我拉起了 NWmatcher source code 对于一些清淡的早晨阅读,我注意到了我以前在javascript中从未见过的这段奇怪的代码:

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

    此代码段可在 compileGroup 第441行的方法(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: 是我自己做的。如果循环中有一个循环,并且希望跳到外部循环的下一个迭代(不完成内部或外部循环),则可以执行 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 回复  |  直到 16 年前
        1
  •  4
  •   David Murdoch    16 年前

    这是 labeled continue . 您也可以使用 labeled break . 这是ECMAScript 3以来的标准配置。它的工作原理基本相同 in Java .

        2
  •  1
  •   Justin Niessner    16 年前

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

    至于其他用途,请在(除了 continue ,标签可用于 break ):

    Tutorialspoint - JavaScript Loop Control with break and continue