ECMAScript break와 continue 문
break과 continue 문장은 반복 내의 코드 실행에 더 엄격한 통제를 제공합니다.
break과 continue 문장의 차이점
break 문장은 즉시 반복을 탈출하고, 다시 반복할 코드를 방지합니다.
continue 문장은 현재 반복을 탈출하면서 또 다음 반복을 수행할 수 있도록 합니다.
예를 들어:
var iNum = 0; for (var i=1; i<10; i++) { if (i % 5 == 0) { break; } iNum++; } alert(iNum); // "4" 출력
위 코드에서 for 반복문은 1에서 10까지 i 변수를 반복합니다. 반복 본체에서 if 문은 (나눗셈 연산자를 사용하여) i의 값이 5로 나누어 떨어지는지 확인합니다. 그렇다면 break 문장이 실행되어 alert가 "4"을 표시하고, 반복을 탈출하기 전에 반복을 수행한 횟수를 표시합니다.
이 예제에서 break 문장 대신 continue 문장을 사용하면 결과가 다릅니다:
var iNum = 0; for (var i=1; i<10; i++) { if (i % 5 == 0) { continue; } iNum++; } alert(iNum); // "8" 출력
여기서 alert가 "8"을 표시할 것입니다. 반복을 수행할 횟수는 9입니다. 그러나 i의 값이 5일 때는 continue 문장이 실행되어 iNum++ 표현식을 건너뛰고 반복의 시작으로 돌아갈 것입니다.
태그와 함께 사용됩니다.
break 문과 continue 문은 태그와 함께 사용되어 코드의 특정 위치로 돌아갈 수 있습니다.
루프 내에 루프가 있을 때, 이렇게 합니다. 예를 들어:
var iNum = 0; outermost: for (var i=0; i<10; i++) { for (var j=0; j<10; j++) { if (i == 5 && j == 5) { break outermost; } iNum++; } } alert(iNum); // "55" 출력
위 예제에서 태그 outermost는 첫 번째 for 문을 의미합니다. 일반적으로 각 for 문은 10번 코드 블록을 실행하며, 이는 iNum++가 일반적으로 100번 실행되는 것을 의미합니다. 코드가 완료되면 iNum은 100이어야 합니다. 여기서 break 문은 루프를 종료한 후 탈출할 수 있는 위치의 태그를 가지고 있습니다. 따라서 break 문은 내부 for 문(변수 j를 사용하는 문)을 벗어날 뿐만 아니라, 외부 for 문(변수 i를 사용하는 문)도 벗어날 수 있습니다. 따라서 iNum의 최종 값은 55입니다. i와 j의 값이 모두 5일 때 루프가 종료됩니다.
continue 문과 같은 방식으로 사용할 수 있습니다:
var iNum = 0; outermost: for (var i=0; i<10; i++) { for (var j=0; j<10; j++) { if (i == 5 && j == 5) { continue outermost; } iNum++; } } alert(iNum); // "95" 출력
위 예제에서 continue 문은 루프가 계속되도록 강제합니다. 내부 루프뿐만 아니라 외부 루프도 마찬가지입니다. j가 5일 때 이러한 상황이 발생하며, 이는 내부 루프가 5번 더 반복되어 iNum의 값이 95가 될 것을 의미합니다.
훌륭히:break과 continue와 함께 사용되는 태그 문은 매우 강력하지만, 과도한 사용은 코드 디버깅에 어려움을 줄 수 있습니다. 사용하는 태그는 설명적이어야 하며, 많은 레이어의 루프를 숨기지 마세요.
훌륭히:태그 문이 무엇인지 알고 싶다면, 다음을 읽어보세요 ECMAScript 태그 문 이 장.