본문 바로가기
개념 정리/모던 자바스크립트 딥다이브

모던 자바스크립트 : 제어문

by 매진2 2023. 10. 17.
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