2010-06-15 3 views
2

좀 가벼운 아침 독서의 NWmatcher source code를 끌어 올려 내가 전에 자바 스크립트에서 본 적이없는 것이 코드 홀수 비트주의 :기본 내용 : for (...) {...}하고 있습니까?

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

이 조각 라인 (441) (에 compileGroup 방법에서 찾을 수 있습니다 nwmatcher-을

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;' 
); 

1.1.1)

는 지금은 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 이외의 다른 용도가 있습니까?

답변

4

이것은 labeled continue입니다. labeled break을 사용할 수도 있습니다. 그것은 ECMAScript 3 이후 표준입니다. 그것은 본질적으로 동일한 방법으로 작동합니다 in Java.

1

단순히 레이블을 사용하여 흐름을 제어하는 ​​예입니다. 그것은 표준의 일부이며, 내가 아는 한 모든 브라우저가이를 지원합니다. 다른 용도에 관해서는, 당신이 그것을 함께 할 수있는 정확하게 확인

(continue 이외에, 라벨 break 사용할 수 있습니다) :

Tutorialspoint - JavaScript Loop Control with break and continue