# 08장 제어문

## 제어문

* 제어문은 조건에 따라 코드블록을 시행하거나 반복 실행할때 사용한다.
* 제어문을 사용하면 코드 실행의 흐름을 인위적으로 제어 가능하다.
* 코드 실행 흐름을 제어하는 것을 지양하기 위해 고차함수를 사용하기도 한다. (forEach, map, filter...)

### 블록문

* 0개 이상의 문을 중괄호로 묶은 것, 코드블록 또는 블록이라고 부름
* 블록문을 하나의 실행단위로 취급한다.

### 조건문

주어진 조건식의 평가 결과에 따라 코드 블록을 실행한다. if..else와 switch 두가지를 제공

#### if...else

* 조건식은 반드시 불리언으로 평가 되어야 한다. 만약 불리언 값이 아닌 값이 조건식에 있다면 암묵적으로 형변환하여 코드블록 실행여부를 판단한다.
* 논리적으로 참, 거짓으로 코드블록 실행 여부를 결정한다.

#### switch

* 주어진 표현식을 평가하여 그 값과 일치하는 case문으로 실행흐름을 옮긴다.
* 다양한 상황에 따라 실행할 코드블록을 결정할 때 사용한다.
* 의도적으로 break문을 생략한 풀스루가 유용한 경우도 있다.

### 반복문

조건식의 평가 결과가 참인 경우 코드 블록 실행, 조건식이 거짓일때 까지 반복

* for : 조건식이 거짓으로 평가될때까지 코드 블록 반복 실행, 반복횟수가 명확할 때
* while : 조건식의 평가 결과가 참이면 코드 블록 반복 실행, 반복횟수가 불명확할 때 주로 사용
* do...while : 코드블록을 먼저 실행하고 조건식을 평가. 따라서 한번은 무조건 딸린 코드블록이 실행됨.

#### 반복문을 대체할 수 있는 기능

* 배열 순회 시 forEach
* 객체 프로퍼티 열거 시 for...in
* 이터러블 순회 시 for..of

### break문

레이블문, 반복문, switch문의 코드블록을 탈출할 때 사용.

### continue문

반복문의 코드 블록을 현 시점에서 종료, 다시 조건을 판단하러 감, 스슝\~
