JavaScript Switch
JavaScript Switch: 선택문을 통한 조건 분기
JavaScript에서 switch
문은 여러 조건을 처리할 때 사용하는 제어 구조입니다.
if...else
문과 달리, switch
문은 하나의 표현식(값)을 여러 값과 비교하여 각 값에 해당하는 코드 블록을 실행합니다.
이 구조는 많은 조건을 효율적으로 처리할 수 있어, 특히 여러 경우의 수가 있을 때 가독성을 높여줍니다.
이 가이드는 JavaScript의 switch
문을 사용하여 조건을 분기하고, 그 활용 방법을 설명합니다.
1. 기본 switch
문
switch
문은 하나의 표현식을 평가하고, 그 결과와 일치하는 **case
**에 해당하는 코드를 실행합니다.
1.1. 기본 구문
switch (표현식) {
case 값1:
// 표현식이 값1과 일치할 때 실행
break;
case 값2:
// 표현식이 값2와 일치할 때 실행
break;
default:
// 위의 어느 값과도 일치하지 않을 때 실행
}
break
:case
블록이 실행된 후switch
문을 빠져나가도록 합니다.break
가 없으면 다음case
가 연속적으로 실행될 수 있습니다.default
: 어떤case
와도 일치하지 않는 경우 실행되는 블록입니다. 선택사항이지만, 모든 경우를 처리하기 위해 자주 사용됩니다.
2. switch
문 사용 예시
2.1. 요일에 따른 출력
아래 예시는 현재 요일에 따라 서로 다른 메시지를 출력하는 예시입니다.
const day = new Date().getDay(); // 0 = 일요일, 1 = 월요일, ..., 6 = 토요일
switch (day) {
case 0:
console.log("일요일입니다.");
break;
case 1:
console.log("월요일입니다.");
break;
case 2:
console.log("화요일입니다.");
break;
case 3:
console.log("수요일입니다.");
break;
case 4:
console.log("목요일입니다.");
break;
case 5:
console.log("금요일입니다.");
break;
case 6:
console.log("토요일입니다.");
break;
default:
console.log("알 수 없는 요일입니다.");
}
2.2. default
블록의 활용
default
블록은 어떤 case
와도 일치하지 않을 때 실행됩니다.
const fruit = "banana";
switch (fruit) {
case "apple":
console.log("사과입니다.");
break;
case "orange":
console.log("오렌지입니다.");
break;
default:
console.log("해당하지 않는 과일입니다.");
}
// 출력: "해당하지 않는 과일입니다."
3. break
와 연속 실행 (Fall-Through)
break
문을 생략하면, 조건이 일치한 case
이후의 모든 case
블록이 연속적으로 실행됩니다. 이를
fall-through라고 하며, 의도적으로 여러 case
를 그룹화할 때 유용할 수 있습니다.
3.1. break
가 없는 경우
const grade = 'B';
switch (grade) {
case 'A':
console.log("우수한 성적입니다.");
case 'B':
console.log("좋은 성적입니다.");
case 'C':
console.log("보통 성적입니다.");
default:
console.log("다시 노력하세요.");
}
// 출력:
// 좋은 성적입니다.
// 보통 성적입니다.
// 다시 노력하세요.
3.2. break
를 사용하여 제어
위 예시에서 break
를 추가하면, 원하는 case
에서 switch
문을 빠져나갈 수 있습니다.
switch (grade) {
case 'A':
console.log("우수한 성적입니다.");
break;
case 'B':
console.log("좋은 성적입니다.");
break;
case 'C':
console.log("보통 성적입니다.");
break;
default:
console.log("다시 노력하세요.");
}
// 출력: "좋은 성적입니다."
4. 여러 값 처리하기
switch
문에서 여러 case
를 같은 코드 블록으로 처리할 수 있습니다. 같은 결과를 도출하는 여러 조건을 처리할 때 유용합니다.
4.1. 여러 case
의 동일한 처리
const value = 2;
switch (value) {
case 1:
case 2:
case 3:
console.log("1부터 3 사이의 값입니다.");
break;
default:
console.log("1부터 3 사이가 아닌 값입니다.");
}
// 출력: "1부터 3 사이의 값입니다."
5. 조건식에서 switch
문 사용하기
switch
문에서는 정수, 문자열, 부울 값 등을 비교할 수 있습니다. 숫자뿐만 아니라,
문자열을 포함한 다양한 표현식도 사용할 수 있습니다.
5.1. 문자열 조건 비교
const status = "pending";
switch (status) {
case "success":
console.log("성공하였습니다.");
break;
case "pending":
console.log("처리 중입니다.");
break;
case "failed":
console.log("실패하였습니다.");
break;
default:
console.log("알 수 없는 상태입니다.");
}
// 출력: "처리 중입니다."
6. switch
문과 객체 비교
JavaScript에서 객체는 기본적으로 참조 타입이므로, switch
문에서 객체를 비교할 때는 참조가 동일한지 여부를
기준으로 판단합니다. 즉, 두 객체가 같은 내용이라도 참조가 다르면 같지 않다고 평가됩니다.
6.1. 객체 비교 예시
const obj1 = { name: "Alice" };
const obj2 = { name: "Alice" };
switch (obj1) {
case obj2:
console.log("두 객체가 같습니다.");
break;
default:
console.log("두 객체가 다릅니다.");
}
// 출력: "두 객체가 다릅니다." (참조가 다르기 때문)
7. if...else
와 switch
비교
if...else
: 더 복잡한 조건을 처리할 때 유리합니다. 범위, 논리 연산 등 다양한 표현식을 사용할 수 있습니다.switch
: 하나의 값이나 표현식을 여러 값과 비교할 때, 코드가 더 간결하고 가독성이 좋습니다.
7.1. if...else
를 사용할 때
const fruit = "banana";
if (fruit === "apple") {
console.log("사과입니다.");
} else if (fruit === "orange") {
console.log("오렌지입니다.");
} else {
console.log("해당하지 않는 과일입니다.");
}
7.2. 동일한 switch
문
switch (fruit) {
case "apple":
console.log("사과입니다.");
break;
case "orange":
console.log("오렌지입니다.");
break;
default:
console.log("해당하지 않는 과일입니다.");
}
요약
switch
문: 하나의 표현식을 다양한 값과 비교하여 조건에 맞는 코드를 실행합니다.break
:switch
문을 빠져나가도록 하여 **연속 실행(fall-through)**을 방지합니다.default
: 어느 조건에도 일치하지 않을 때 실행되는 블록입니다.- 여러 값 처리: 같은 결과를 도출하는 여러
case
를 함께 처리할 수 있습니다.
switch
문은 여러 가지 값을 비교해야 할 때 가독성과 유지보수성이 좋습니다. 특히, 많은 경우의 수를 처리할 때
유용하며, 특정 조건에 따라 코드를 효율적으로 분기할 수 있습니다.