JS/[책] 모던 자바스크립트 Deep Dive

8. 제어문

배워도끝이없네 2021. 8. 18. 22:19

- 조건에 따라 코드블록을 실행하거나 반복할 때 사용한다 (조건문 / 반복문)

 

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