2012-06-30 3 views
11

MDN states:는 DO-while 루프에서 계속 사용

당신이 레이블없이 continue를 사용하는 경우, 그것은 while, do-while 또는 for 문을 둘러싸는 가장 안쪽의 현재 반복을 종료하고 다음과 루프의 실행을 계속 되풀이.

내가 예상 한대로 다음 코드가 작동하지 않는 이유가 확실하지 않습니다.

do { 
    continue; 
} while(false); 

while 조건이 false에도 불구하고, 나는 루프는 하나의 반복 한 후 종료, continue 즉시 다시 continue을 실행하는 블록의 시작으로 이동하기 때문에 어떻게 든 그러나 등, 영원히 실행 것으로 기대합니다. continue은 무시됩니다.

do-while 루프에서 continue은 어떻게 작동합니까?

+1

조건이 충족됩니다. 조건이 충족되지 않으면 다음 반복이 없습니다. –

+1

나는 그것을 놓쳤다. 나는 내가 소스 코드의 순서에 속아 넘어 졌다고 생각한다. (나는'계속'이 항상 소스 코드에서 "뛰어"올 것이라고 생각했다.) – pimvdb

+1

* * 그런 식으로 보이지만 특히 문장 레이블을 사용하는 경우에는 그렇다. 'TOP : do {계속 TOP; } while (false)' –

답변

7

체크 아웃이 jsFiddle는 : http://jsfiddle.net/YdpJ2/3/

var getFalse = function() { 
    alert("Called getFalse!"); 
    return false; 
}; 

do { 
    continue; 
    alert("Past the continue? That's impossible."); 
} while(getFalse());​ 

이 검사 조건을 실행하는 데 그 반복에서 벗어나, 계속 칠 나타납니다. 조건은 거짓이므로 종료됩니다.

2

계속 진행하면 루프 조건이 평가됩니다. 이는 거짓이므로 루프가 종료됩니다.

4

Continue는 블록의 나머지 코드 실행을 중지하고 루프의 다음 반복으로 바로 이동합니다.

당신이 while(false)을하고 있기 때문에이 검사 while(false)를 생략하지 않습니다에는 다음 반복

6

continue 없지만 단순히 괄호 안에있는 코드의 나머지 부분을 무시합니다.

4

continue 현재 반복에서 다시 시작하지 않지만 다음 반복으로 건너 뜁니다 (MDN 인용구에서 말한 것처럼).

이므로 false 조건이므로 다음 반복이 없으므로 전체 루프가 완료됩니다.

1

가 나는 continue는 블록의 시작 부분으로 바로 이동하지 않는

, 그것은 블록의 끝으로 이동 블록의 시작으로 점프를 계속 이후 영원히 실행 것으로 기대합니다.