logo태영이의 공부방

[JavaScript] 제어문

2022년 08월 07일

제어문

조건에 따라 코드 블록을 실행/반복 실행 할 때 사용하는 것이 바로 제어문control flow statement이다.

보통 코드는 위에서 아래 방향으로 실행되지만 제어문을 사용해 실행 흐름을 제어할 수 있다.

실행 흐름을 어렵게 만들 경우, 코드의 가독성이 떨어진다는 단점이 있다.

블록문

블록문block statement은 0개 이상의 문을 중괄호로 묶은 것으로 코드 블록 또는 블록이라고도 부른다. 일반적으로 제어문이나 함수를 정의할 때 사용하지만 단독으로 사용할 수도 있다.

자바스크립트에서는 문의 끝에 세미콜론(;)을 붙이지만, 블록문의 경우 자체 종결성을 갖기 때문에 붙이지 않는다.

// 블록문
{
  let message = 'hello'
}
 
// 제어문
if (message) {
  console.log(message)
}
 
// 함수 선언문
function square(x) {
  return x ** 2
}

조건문

조건문conditional statement은 주어진 조건식의 평가 결과에 따라 코드 블록의 실행을 결정하며 if-else문과 switch문이 있다.

1. if-else

if (조건식1) {
  // 조건식1이 참인 경우
} else if (조건식2) {
  // 조건식2가 참인 경우
} else {
  // 조건식1과 조건식2가 모두 거짓인 경우
}
  • 논리적 참/거짓에 따라 실행할 코드 블록 결정
    • 조건식이 불리언 값으로 평가되지 않는다면, 암묵적으로 불리언 값으로 강제 변환된다.
  • else if문은 여러 번, if문과 else문은 한 번씩 사용 가능
  • 코드 블록 내의 문이 하나라면 중괄호 생략 가능
    if (x % 2) console.log('홀수')
    else console.log('짝수')
  • 대부분의 if-else문은 삼항 조건 연산자로 변환 가능
    let result = x % 2 ? '홀수' : '짝수'
    • 삼항 조건 연산자: 조건에 따라 값을 결정해 변수에 할당하는 경우
    • if-else: 조건에 따라 실행해야 할 내용이 복잡한 경우

2. switch

switch (표현식) {
  case 표현식1:
    // switch문의 표현식과 표현식1이 일치하는 경우
    break
  case 표현식2:
    // switch문의 표현식과 표현식2가 일치하는 경우
    break
  default:
  // switch문의 표현식과 일치하는 case 문이 없는 경우, 선택사항
}
  • 다양한 상황에 따라 실행할 코드 블록 결정
    • 표현식이 주로 문자열 또는 숫자 값
  • break문이 없다면 표현식과 일치하지 않아도 다음 case문 실행 (폴스루fall through 1)

반복문

반복문loop statement은 조건식이 거짓일 때까지 코드 블록을 실행하며 for문, while문, do-while문이 있다.

1. for

for (변수 선언/할당문; 조건식; 증감식) {
  // 조건식이 참인 경우 반복 실행
}
  • 조건식이 거짓으로 평가될 때까지 코드 블록 반복 실행
  • 어떤 식도 선언하지 않으면 무한루프
    for (;;) { ... }
  • for문 중첩 가능

2. while

while (조건식) {
  // 조건식이 참인 경우 반복 실행
}
  • 조건식의 평가 결과가 불리언 값이 아니라면 불리언 값을 강제 변환
  • for: 반복 횟수가 명확한 경우
  • while: 반복 횟수가 불명확한 경우

3. do-while

do {
  ...
} while (조건식)
  • 코드 블록 먼저 실행 후, 조건식 평가
    • 코드 블록은 무조건 한 번 이상 실행

break

break문은 레이블문2, 반복문 또는 switch문의 코드 블록을 탈출한다.

continue

continue문은 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동시킨다.

정리

  • 블록문: 0개 이상의 문을 중괄호로 묶은 것
  • 조건문
    • if-else문: 논리적 참/거짓에 따라 실행할 코드 블록 결정
    • switch문: 다양한 상황에 따라 실행할 코드 블록 결정
  • 반복문
    • 조건식이 거짓일 때까지 코드 블록 실행
    • for문: 반복 횟수가 명확한 경우
    • while문: 반복 횟수가 불명확한 경우

      do-while문: 코드 블록 무조건 한 번 이상 실행

  • break문: 코드 블록 탈출 (레이블문, 반복문, switch문)
  • continue문: 반복문의 코드 블록 실행을 현 지점에서 중단하고 반복문의 증감식으로 실행 흐름을 이동

💡

이 게시물은 모던자바스크립트 Deep Dive 교재를 참고하였습니다.

Footnotes

  1. 하나의 case문을 거친 후 그 다음 case문의 내용을 이어서 실행

  2. 식별자가 붙은 문, break문에 레이블 식별자 지정