[JavaScript] switch문 vs if문

Moon·2024년 11월 8일
0

JavaScript | 기초

목록 보기
27/48
post-thumbnail

자바스크립트에서 switch 문과 if 문은 조건에 따라 서로 다른 동작을 수행할 수 있도록 하는 중요한 제어문이다. 이번 글에서는 switch 문과 if 문을 비교하며, 각각의 특징과 사용 시 유의할 점을 정리했다.

switch 문: 고정된 값에 따른 분기 처리

switch 문은 하나의 고정된 값을 조건으로 여러 가지 케이스(case)를 검사하여 해당 케이스의 동작을 수행한다. 이때 switch 문은 자료형도 일치해야 하며, 조건을 만족하는 첫 번째 케이스를 실행한 뒤, break 키워드로 탈출한다.

예시: 음료 선택 프로그램

사용자가 원하는 음료를 선택하면, 해당 음료에 맞는 메시지를 출력하는 코드다.

let drinkChoice = 2; // 사용자가 선택한 음료 (1: 커피, 2: 녹차, 3: 오렌지 주스, 4: 물)

switch (drinkChoice) {
  case 1:
    console.log("커피를 선택하셨습니다. 활력을 드립니다!");
    break;
  case 2:
    console.log("녹차를 선택하셨습니다. 몸에 좋은 선택이에요.");
    break;
  case 3:
    console.log("오렌지 주스를 선택하셨습니다. 비타민 충전 완료!");
    break;
  case 4:
    console.log("물을 선택하셨습니다. 건강을 위해 물을 많이 마셔요.");
    break;
  default:
    console.log("1에서 4 사이의 숫자로 음료를 선택해 주세요.");
}

if 문: 조건식으로 분기 처리하기

if 문은 범위나 논리적 조건이 필요한 경우에 더 유리하다. 이번에는 if 문을 사용하여 음료 선택 조건을 처리해보자. switch 문과 동일한 조건을 일치 비교(===)로 작성하여 동일한 동작을 구현한다.

if (drinkChoice === 1) {
  console.log("커피를 선택하셨습니다. 활력을 드립니다!");
} else if (drinkChoice === 2) {
  console.log("녹차를 선택하셨습니다. 몸에 좋은 선택이에요.");
} else if (drinkChoice === 3) {
  console.log("오렌지 주스를 선택하셨습니다. 비타민 충전 완료!");
} else if (drinkChoice === 4) {
  console.log("물을 선택하셨습니다. 건강을 위해 물을 많이 마셔요.");
} else {
  console.log("1에서 4 사이의 숫자로 음료를 선택해 주세요.");
}

이렇게 작성한 if 문은 switch 문과 같은 동작을 하며, 실행 결과도 동일하다.

switch 문과 if 문 선택 기준

  • 특정 값에 따라 동작이 달라지는 경우에는 switch 문이 가독성이 좋고, 더 깔끔하게 사용할 수 있다.
  • 범위나 논리적인 조건이 필요한 경우에는 if 문이 더 효과적이다.

switch 문과 if 문 비교: 자료형 일치와 엄격 비교

switch 문과 if 문은 모두 조건에 따라 분기 처리하지만, switch 문은 자료형까지 일치해야 조건을 충족한다는 차이가 있다.

예시: 자료형 일치 비교

아래와 같이 drinkChoice에 문자열 "2"를 할당하면, switch 문에서는 자료형이 일치하지 않아 default 부분이 실행된다.

let drinkChoice = "2"; // 문자열로 할당한 경우

switch (drinkChoice) {
  case 1:
    console.log("커피를 선택하셨습니다. 활력을 드립니다!");
    break;
  case 2:
    console.log("녹차를 선택하셨습니다. 몸에 좋은 선택이에요.");
    break;
  case 3:
    console.log("오렌지 주스를 선택하셨습니다. 비타민 충전 완료!");
    break;
  case 4:
    console.log("물을 선택하셨습니다. 건강을 위해 물을 많이 마셔요.");
    break;
  default:
    console.log("1에서 4 사이의 숫자로 음료를 선택해 주세요.");
}

// 동등 비교로 if 문 작성
if (drinkChoice == 1) {
  console.log("커피를 선택하셨습니다. 활력을 드립니다!");
} else if (drinkChoice == 2) {
  console.log("녹차를 선택하셨습니다. 몸에 좋은 선택이에요.");
} else if (drinkChoice == 3) {
  console.log("오렌지 주스를 선택하셨습니다. 비타민 충전 완료!");
} else if (drinkChoice == 4) {
  console.log("물을 선택하셨습니다. 건강을 위해 물을 많이 마셔요.");
} else {
  console.log("1에서 4 사이의 숫자로 음료를 선택해 주세요.");
}

실행 결과:

  • switch 문에서는 default가 실행되고,
  • if 문에서는 동등 비교로 인해 문자열 "2"를 숫자 2로 해석하여 해당 메시지가 출력된다.
1에서 4 사이의 숫자로 음료를 선택해 주세요.
녹차를 선택하셨습니다. 몸에 좋은 선택이에요.

이 차이로 인해 switch 문을 if 문으로 대체할 때는 일치 비교(===)를 통해 자료형까지 구분하는 것이 안전하다.

요약

  • switch: 고정된 값을 분기 조건으로 사용할 때 유리하며, break를 통해 각 조건을 안전하게 처리한다.
  • if: 범위 조건이 필요하거나 논리적 분기가 필요한 경우에 효과적이며, 동등 비교와 일치 비교를 상황에 따라 적절히 활용한다.
  • switch 문은 엄격한 자료형 비교를 적용하므로, if문으로 대체할 때는 반드시 등호 세 개를 사용해 일치 비교를 해야 한다.
profile
MOON.DEVLOG

0개의 댓글