본문 바로가기

개발/javascript

제어문06 - break 문

"제어문"

 

switch 문과 while 문에서 살펴보았듯이 break 문은 코드 블록을 탈출한다. 좀 더 정확히 표현하자면 코드 블록을 탈출하는 것이 아니라 레이블 문, 반복문(for, for...in, for...of, while, do...while) 또는 switch 문의 코드 블록을 탈출한다. 레이블 문, 반복문, switch 문의 코드 블록 이외에 break 문을 사용하면 SyntaxError(문법 에러)가 발생한다.

if (true) {
	break; // Uncaught SuntaxError: Illegal break statement
}

 

레이블 문(Label statement)이란 식별자가 붙은 문을 말한다.

// foo라는 레이블 식별자가 붙은 레이블 문
foo: console.log('foo');

레이블 문은 프로그램의 실행 순서를 제어하기 위해 사용한다. 사실 switch 문의 case 문과 default 문도 레이블 문이다. 레이블 문을 탈출하려면 break 문에 레이블 식별자를 지정한다.

// foo라는 식별자가 붙은 레이블 블록문
foo: {
	console.log(1);
	break foo; // foo 레이블 블록문을 탈출한다.
	console.log(2);
}

console.log('Done!');

중첩된 for 문의 내부 for문에서 break 문을 실행하면 내부 for 문을 탈출하여 외부 for 문으로 진입힌다. 이때 내부 for 문이 아닌 외부 for 문을 탈출하려면 레이블 문을 사용한다.

// outer라는 식별자가 붙은 레이블 for 문
outer: for (var i = 0; i < 3; i++) {
	for (var j = 0; j < 3; j++) {
    	// i + j = 3이면 outer라는 식별자가 붙은 레이블 for 문을 탈출한다.
        if ( i + j === 3 ) break outer;
        console.log('inner' + j);
    }
}

console.log('Done!');

중첩된 for 문을 외부로 탈출할 때 레이블 문은 유용하지만 그 외의 경우 레이블 문은 일반적으로 권장하지 않는다. 레이블 문을 사용하면 프로그램의 흐름이 복잡해져서 가독성이 나빠지고 오류를 발생시킬 가능성이 높아지기 때문이다.

'개발 > javascript' 카테고리의 다른 글

타입 변환과 단축 평가01 - 타입 변환이란?  (0) 2023.09.24
제어문07 - continue 문  (0) 2023.09.24
제어문05 - while 문  (0) 2023.09.24
제어문04 - for 문  (0) 2023.09.24
제어문03 - switch 문  (0) 2023.09.20