728x90
제어문이란?
- 제어문 : 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용
- 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어 가능 -> 코드의 흐름을 이해하기 어렵게 만들어 가독성 ↓
1. 블록문
- 블록문 : 0개 이상의 문을 중괄호로 묶은 것
- 코드 블록, 블록으로 불림
- 블록문은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때무에 블록문 끝에는 세미콜론 생략
- 자바스크립트는 블록문을 하나의 실행 단위로 취급
- 블록문은 단독으로 사용할 수도 있으나 일반적을 제어문이나 함수 정의할 때 사용하는 것이 일반적
2. 조건문
- 조건문 : 주어진 조건식의 평가 결과에 따라 블록문의 실행 결정
- 조건식 : boolean 값으로 평가될 수 있는 표현식
- 종류 : if..else문, switch문
a. if..else문
- if..else문 : 주어진 조건식의 평과 결과에 따라 실행할 코드 블록 결정
- 조건식이 boolean이 아닌 경우 암묵적 타입 변환이 일어남
- 코드 블록 내 문이 하나뿐이라면 중괄호 생략 가능
- 삼항 조건 연산자로 바꿔 쓰기 가능
b. switch 문
- switch문 : 주어진 표현식을 평가해 그 값과 일치하는 표현식 가지는 case문으로 실행 흐름을 옮김
- case문 : 상황을 의미하는 표현식을 지정하고 콜론으로 마치고 그 뒤에 실행할 문들을 위치시킴
- default문 : 선택사항이며 switch문의 표현식과 일치하는 case 문이 없을 때 실행될 문을 위치시킴
- break문 : 코드블록에서 탈출하는 역할
**if..else문은 논리적 참, 거짓으로 실행할 코드 블록을 결정한다면 switch문은 상황에 따라 실행할 코드블록 결정할 때 사용
풀스루 fall through란?
- 풀스루 fall through : switch문의 표현식의 평가 결과와 일치하는 case문으로 실행흐름이 이동하여 문을 실행했지만 실행 후 switch 문을 탈출하지 않고 switch문이 끝날 때까지 이후의 모든 case문과 default 문을 실행하는 것
- 폴스루는 case 문의 마지막에 break문을 사용하지 않았기 때문에 나타남
- default문은 맨 마지막에 위치하므로 default문이 종료되면 switch문을 빠져나가기 때문에 break문이 필요없음
3. 반복문
- 반복문 : 조건식의 평가 결과가 참인 경우 코드 블록 실행하며 조건식이 거짓일 때까지 반복
- 종류 : for문(반복횟수 명확),while문(반복횟수 불명확), do..while문
- 반복문 대체 : forEach 메소드(배열 순회할 때), for..in문(객체의 프로퍼티 열거), for...of 문(ES6 도입, 이터러블 순회)
a. for 문
for 문 : 조건식이 거짓으로 평가될 때까지 코드블록 반복 실행
무한루프가 되는 경우 : 변수선언식, 조건식, 증감식 중 어떤 식도 선언하지 않을 때
b. while 문
while문 : 주어진 조건식의 평가 결과가 참이면 코드블록 계속 반복 실행
무한루프가 되는 경우 : 평가 결과가 언제나 참일 때
무한루프 탈출하기 위해서는 if 문으로 탈출 조건 만들고 break 문 사용
c. do..while문
코드블록 먼저 실행하고 조건식 평가 -> 코드블록은 무조건 한번 이상 실행
4. break 문
- break문은 레이블문, 반복문, 스위치문의 코드 블록 탈출 도와줌 -> 이 외의 코드블록에 break 문 사용시 문법 에러 발생
a. 레이블문이란?
- 레이블문 : 식별자가 붙은 문
- 프로그램 실행 순서 제어에 사용
- 레이블문을 탈출 하려면 break문에 레이블 식별자 지정
- 중첩 for문의 외부 for문 탈출에 유용 -> 이외에는 지양 : 프로그램 흐름 복잡해져 가독성↓ 오류↑
- 예시 : switch문의 case문과 default문
b. 반복문, 스위치문에서 break 문
- 반복문 더이상 진행하지 않아도 될 때 불필요한 반복 회피
5. continue 문
- continue문 : 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름 이동 시킴
- 반복문 탈출 ✕
728x90
'개념 정리 > 모던 자바스크립트 딥다이브' 카테고리의 다른 글
모던 자바스크립트 : 실행 컨텍스트 기초 (1) | 2023.10.30 |
---|---|
모던 자바스크립트 : 객체리터럴 (0) | 2023.10.20 |
모던 자바스크립트 : 타입변환과 단축평가 (0) | 2023.10.18 |
모던 자바스크립트 : 데이터 타입과 연산자 (1) | 2023.10.17 |
모던 자바스크립트 : 자바스크립트, 변수, 표현식과 문 (0) | 2023.10.12 |