모던 자바스크립트 deep dive
08. 제어문
제어문은 코드의 흐름을 이해하기 어렵게 만들어 가독성을 해치는 단점이 있다. 추후에 배우는 고차 함수를 사용하여 제어문 사용을 억제해야 한다.
1. 블록문
- 0개 이상의 문을 중괄호로 묶은 것.
- 블목문의 중괄호는 자체 종결성을 가지기 때문에 세미콜론을 사용하지 않음
2. 조건문
- 자바스크립트는 if-else, switch 두가지 조건문을 제공
- 조건식은 boolean 값으로, 평가될 수 있는 표현식
- 조건식이 boolean 값이 아닌 값으로 평가되면 암묵적으로 boolean 값으로 변환한다.
- 코드블록 내의 문이 하나라면 중괄호를 생략할 수 있다.
- switch문의 표현식은 boolean 값 보다는 문자열이나 숫자 값인 경우가 많다.
- fall through가 생기지 않네 break를 잘 써준다. fall through를 활용할 수도 있다.
- if-else로 해결할 수 있으면 if-else를 사용하는것이 더 좋다. 하지만 상황에 따라 다르니 가독성,효율성 등을 잘 판단해야 한다.
3. 반복문
- for문은 반복 횟수가 명활할 때, while문은 반복 횟수가 불명확할 때 주로 사용한다.
- while는 조건이 맞지 않으면 코드블록을 실행하지 않고 do-while문은 조건이 맞지 않아도 do 코드블록을 최소 1번은 실행한다. 쉽게 풀어 while은 평가-실행 순, do-while은 실행-평가 순이다.
- break 문은 레이블문, 반복문, switch문을 제외한 다른곳에 사용할 수 없다.
- 레이블 문 : 레이블 식별자가 붙은 문, 프로그램의 실행순서를 제어하는데 사용된다.
foo: console.log('foo');
foo1: {
for(---){
for(---){
break foo1;
}
}
}
- 위 코드에서 원래 break를 사용하면 외부 for문으로 나가지만 레이블문의 이름을 적어 레이블 밖으로 탈출했다.
- lable문을 사용하면 가독성이 떨어져 사용이 권장되지 않는다.
- continue문은 break문 처럼 탈출하는게 아닌 지금의 코드블록을 넘기고 증감식으로 실행 흐름을 다음으로 넘긴다.