:ledger: while문과 for문 언제 사용하는게 좋을까?

  • switch 문은 여러 조건을 처리해야 할 때 사용하는 다중 분기문이다.
  • 일반적으로 if-else 문보다 가독성이 높고 명확한 분기가 필요한 경우에 적합합니다.

:one: switch 문의 기본 문법

  • 표현식: 비교 대상이 되는 값. (숫자, 문자열 등 사용 가능)
  • case: 조건을 나열하며, case 뒤의 값과 표현식을 비교함.
  • break: 조건에 맞는 분기가 실행된 후 나머지 코드를 건너뛰고 switch 문을 종료함.
  • default: 조건에 해당하지 않는 경우 실행됩니다. 선택적으로 사용 가능함.
switch (표현식) {
  case 값1:
    // 값1일 때 실행할 코드
    break;
  case 값2:
    // 값2일 때 실행할 코드
    break;
  default:
  // 모든 조건이 해당되지 않을 때 실행할 코드
}

:two: 사용 예시

:pushpin: 2-1) 예시1: 요일 출력

switch 문으로 요일을 처리하는 예제

const day = new Date().getDay(); // 0: 일요일, 1: 월요일 ...

switch (day) {
  case 0:
    console.log("오늘은 일요일입니다.");
    break;
  case 1:
    console.log("오늘은 월요일입니다.");
    break;
  case 2:
    console.log("오늘은 화요일입니다.");
    break;
  default:
    console.log("오늘은 주중입니다.");
}

:pushpin: 2-2) 예시2: 숫자 계산기

사용자가 입력한 연산 기호에 따라 계산을 처리하는 예제

const a = 5;
const b = 3;
const operator = "+";

switch (operator) {
  case "+":
    console.log(a + b); // 8
    break;
  case "-":
    console.log(a - b); // 2
    break;
  case "*":
    console.log(a * b); // 15
    break;
  case "/":
    console.log(a / b); // 1.666...
    break;
  default:
    console.log("유효하지 않은 연산자입니다.");
}

:pushpin: 2-3) 중첩 case 활용

여러 case가 동일한 동작을 해야 할 때 중첩할 수 있다.

const fruit = "apple";

switch (fruit) {
  case "apple":
  case "banana":
    console.log("이 과일은 주스에 적합합니다.");
    break;
  case "lemon":
    console.log("이 과일은 레몬차에 적합합니다.");
    break;
  default:
    console.log("추천할 수 없는 과일입니다.");
}

:three: switch 문과 if-else 문의 차이

특징 switch 문 if-else 문
비교 방식 동일한 값 비교 (===) 다양한 조건 (범위, 논리 연산 등) 사용 가능
가독성 조건이 많을수록 읽기 쉽고 명확 조건이 많아지면 가독성이 떨어질 수 있음
유연성 제한된 값 비교에 적합 범위 비교,복잡한 논리가 필요한 경우 적합
기능 확장성 case를 추가하거나 수정하기 쉽고 간단함 조건이 복잡할 경우 더 자유롭게 설정 가능
중첩 조건 처리 한정된 방식으로 처리 가능 (case 중첩) 다양한 조건을 중첩하여 설정 가능

:four: 언제 switch 문을 사용할까?

상황 적합한 선택 이유
조건 값이 명확하고 고정된 경우 switch 가독성이 좋고, 추가 및 수정이 용이함
조건 값이 복잡하거나 범위가 필요한 경우 if-else 다양한 논리와 조건 처리에 적합

:fire: 회고

  • 조건 값이 고정되어 있다면 switch를 사용하자.
  • 복잡한 논리가 필요하다면 if-else를 사용하자.

:pushpin: 참고 문서

태그:

카테고리: ,

업데이트: