- 조건에 따라 코드블록을 실행하거나 반복할 때 사용한다 (조건문 / 반복문)
1. 블록문
- 0개 이상의 문을 중괄호로 묶은 것으로 코드 블록 또는 블록으로 부른다.
- JS는 블록문을 하나의 실행 단위로 취급.
- 단독사용도 가능하나 일반적으로 제어문이나 함수를 정의할때 사용.
- 블록문은 자체 종결성을 갖기 때문에 세미콜론을 붙이지 않는다.
2. 조건문
- 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다.
- if..else문과 switch문 제공.
2.1 if...else문
- 조건식의 논리적 참/거짓에 따라 실행할 코드 블록이 결정된다.
- if문의 조건식은 불리언으로 평가되어야 한다.
- if의 조건식이 boolean이 아닌 값으로 평가되면 자바스크립트 엔진에 의해 암묵적으로 타입이 강제 변환된다.
- 코드블록 내의 문이 하나뿐이라면 중괄호를 생략 할 수 있다.
- 대부분의 if ... else문은 삼항 조건 연산자로 바꿔 쓸 수 있다.
2.2 switch문
- 주어진 표현식을 평가해 평가한 값과 일치하는 표현식을 갖는 case문으로 실행 흐름을 옮긴다.
- 표현식과 일치하는 case문이 없다면 실행 순서는 default문으로 이동한다.
- defualt문은 선택사항으로, 사용할수도, 하지 않을수도 있다.
- if else문의 조건식은 불리언 값으로 평가되어야 하지만, switch문의 표현식은 불리언보다 문자열이나 숫자인 경우가 많다.
- case문의 코드블록에서 break로 맺지 않으면 모든 case를 실행하는 fall through가 일어난다.
- fall through를 이용하는 경우들도 있다.
- switch문은 다양한 키워드를 사용해야 하고, 문법도 복잡하다. 만약 if else로 해결 할 수 있다면 if else문이 바람직하다.
3. 반복문
- 조건식의 평가 결과가 참인 경우 코드 블록을 실행한다. 그 후 조건식을 다시 평가해 참인경우 코드 블록을 다시 실행한다.
3.1 for문
- 조건식이 거짓으로 평가될 때까지 코드 블록을 반복 실행한다.
3.2 while문
- 조건식의 평가가 참이면 코드블록을 계속해서 실행한다.
- for문은 반복횟수가 명확할 때 사용하고, while은 반복 횟수가 불명확할 때 주로 사용한다.
- 무한루프를 탈출하기 위해서는 코드블록 내에 if문으로 탈출 조건을 만들어 break문으로 탈출한다.
3.3 do... while문
- 코드 블록을 먼저 실행하고 조건식을 평가한다.
4. break문
- 레이블 문, 반복문, switch문의 코드 블록을 탈출한다.
- 레이블 문, 반복문, switch문 이외의 코드 블록에서 사용하면 SyntaxError가 난다.
- 레이블 문은 식별자가 붙은 문이다.
- 레이블 문은 프로그램의 순서를 제어하는데 사용한다. (case: 와 default: 도 레이블 문이다.)
- 중첩 for문의 내부에서 break문을 실행하면 내부form문만 탈출한다.
- 외부 for문을 탈출하려면 레이블문을사용한다.
- 레이블 문은 중첩 for문을 탈출할 때 유용하나. 가독성과 프로그램의 흐름이 복잡해져 권장하지 않는다.
5. continue문
- 반복문의 코드를 현지점에서 중단하고 반복문의 증감식으로 흐름을 이동시킨다.
'JS > [책] 모던 자바스크립트 Deep Dive' 카테고리의 다른 글
10. 객체 리터럴 (0) | 2021.08.19 |
---|---|
9. 타입 변환과 단축 평가 (0) | 2021.08.19 |
7. 연산자 (0) | 2021.08.18 |
6. 데이터 타입 (0) | 2021.08.17 |
5. 표현식과 문 (0) | 2021.08.17 |