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 태그 문 이 장.