break 문은 레이블 문, 반복문, switch 문의 코드 블록을 탈출한다. 그 외 코드 블록에서 break 문을 사용하면 SyntaxError가 발생한다.
// 레이블 문이란 식별자가 붙은 문 !
foo : console.log('hello world');
레이블 문은 프로그램의 실행 순서를 제어하는데 사용된다. switch 문의 case, default 문도 레이블 문이다. 레이블 문을 탈출하려면 break문 뒤에 레이블 식별자를 지정한다.
foo: {
console.log(1);
break foo; // 여기서 레이블 문의 코드 블록을 탈출!
console.log(2);
}
console.log('Done!');
중첩된 for 문의 내부 for문에서 break 문을 사용하면 내부 for 문을 탈출하여 외부 for 문으로 진입한다. 이때 내부 for 문이 아닌 외부 for 문을 탈출하려면 레이블 문을 사용해야한다!
outer: for(let i = 0; i < 100; i++){
for(let j = 0; j < 100 ; j++){
if(i + j === 2){ // i + j가 2가 되면 outer 식별자가 붙은 레이블 for 문을 탈출
break outer
console.log(`inner [${i}, ${j}]`);
}
}
}
console.log('Finished')
레이블 문은 중첩된 for 문 외부로 탈출할 때 유용하지만 그 외 경우는 권장되지 않는다.
프로그램 흐름이 복잡해지고 가독성이 안좋아 오류를 발생시킬 가능성이 높아지기 때문!
continue 문은 반복문의 코드 블록 실행을 현 지점에서 중단, 반복문의 증감식으로 실행 흐름을 이동시킨다. break 문 처럼 반복문을 탈출하지 않음!
let string = 'Hello World';
let search = 'o';
let count = 0;
for(let i - 0; i < search.length; i++) {
// 'o'가 아니면 현 지점에서 실행을 중단하고 반복문의 증감식으로 이동!
if(string[i] !== search) continue;
count ++ // continue 문이 실행되면 이 문은 실행되지 않는다!
}
console.log(count); // 3