모던 자바스크립트 Deep Dive 정리
▶ 제어문은 조건문과 반복문으로 크게 나눌 수 있다
▷ 과도한 제어문은 가독성을 해치기 때문에 map, forEach, filter, reduce 같은 고차함수로 제어문을 최소화하는게 바람직하다
fall through
▶ switch 문에서, case 마지막에 break를 기재하지 않아서 모든 case문을 실행해버리는 문제
▷ fall through 현상으로 조건문이 무용지물이 되기 때문에 case 뒤에 break를 잘 써서 이를 방지한다
▷ default 뒤에는 break를 쓰지 않아도 된다
▷ 의도적으로 fall through를 사용하는 경우
const year = 2000; // 2000년은 윤년으로 2월이 29일이다.
const month = 2;
const days = 0;
switch (month) {
// 의도적으로 break를 생략하여 가로로 나열하여 가독성을 높임
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days = 31;
break;
// ...
label 문
▶ 식별자가 붙은 문
▷ switch 문의 case가 label 문에 해당한다
▷ label 문 활용 사례
// foo라는 레이블 식별자가 붙은 레이블 문
foo: console.log('foo');
foo: {
console.log(1);
break foo; // foo 레이블 블록문을 탈출한다. (foo 생략하면 안됨)
console.log(2);
}
console.log('Done!');
▷ 중첩 반복문 구조에서 내부 반복문에서 바로 탈출하는 방법
// 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 [${i}, ${j}]`);
}
}
console.log('Done!');
// 식별자를 굳이 outer로 할 필요 없고 아무거나 적으면 된다
// break 뒤의 식별자랑 외부 for문을 지칭하는 식별자랑 같기만 하면됨