switch문은 if-else문과 기능적으로 비슷하지만, 특정한 상황에서 가독성, 성능, 유지보수성 등의 이유로 더 적합할 수 있다. 아래에서 switch를 사용하는 이유를 정리해 보겠다.
1. switch를 사용하는 주요 이유
✅ 1) 가독성이 좋음
여러 개의 if-else를 사용할 경우 코드가 길어지고 복잡해질 수 있다.
switch를 사용하면 코드가 한눈에 들어오고, 분기 처리가 깔끔해진다.
🔹 예제: if-else와 switch 비교
if-else 사용
// if-else 사용
let fruit = "apple";
if (fruit === "apple") {
console.log("사과입니다.");
} else if (fruit === "banana") {
console.log("바나나입니다.");
} else if (fruit === "orange") {
console.log("오렌지입니다.");
} else {
console.log("알 수 없는 과일입니다.");
}
switch 사용
// switch 사용
switch (fruit) {
case "apple":
console.log("사과입니다.");
break;
case "banana":
console.log("바나나입니다.");
break;
case "orange":
console.log("오렌지입니다.");
break;
default:
console.log("알 수 없는 과일입니다.");
}
✅ switch문이 더 깔끔하게 정리되었으며, 조건이 많아질수록 가독성이 더 좋아진다.
✅ 2) 성능이 더 나을 수 있음
일반적으로 switch문은 내부적으로 해시 테이블 또는 점프 테이블로 변환될 수 있어, 조건이 많을 때 if-else보다 빠를 수도 있다.
특히 숫자 기반 비교(switch (num))에서 성능 차이가 더 클 수 있다.
🔹 예제: if-else vs switch 성능 비교
if-else 사용
let num = 3;
// if-else 방식
if (num === 1) {
console.log("One");
} else if (num === 2) {
console.log("Two");
} else if (num === 3) {
console.log("Three");
} else if (num === 4) {
console.log("Four");
} else {
console.log("Other");
}
switch 사용
// switch 방식
switch (num) {
case 1:
console.log("One");
break;
case 2:
console.log("Two");
break;
case 3:
console.log("Three");
break;
case 4:
console.log("Four");
break;
default:
console.log("Other");
}
✅ 자바스크립트 엔진이 switch를 최적화할 경우, 숫자 기반 switch는 if-else보다 빠르게 실행될 수도 있다.
✅ 하지만 문자열 비교에서는 차이가 크지 않을 수도 있다.
✅ 3) 유지보수가 편리함
• 새로운 조건을 추가할 때 switch는 case 하나만 추가하면 되므로 유지보수가 쉬움.
• if-else는 여러 else if를 추가해야 하므로 가독성이 떨어질 수 있음.
🔹 예제: switch로 유지보수하기 좋은 코드
function getDayName(day) {
switch (day) {
case 0: return "Sunday";
case 1: return "Monday";
case 2: return "Tuesday";
case 3: return "Wednesday";
case 4: return "Thursday";
case 5: return "Friday";
case 6: return "Saturday";
default: return "Invalid day";
}
}
console.log(getDayName(3)); // "Wednesday"
✅ 새로운 요일을 추가하려면 case 하나만 추가하면 됨.
2. 언제 switch를 쓰지 않는 것이 좋을까?
❌ 1) 조건이 단순할 때
switch는 여러 개의 조건을 검사할 때 유용하지만, 조건이 2~3개 정도로 적다면 if-else가 더 간결할 수도 있다.
if (x === 1) {
console.log("One");
} else {
console.log("Not One");
}
✅ 이렇게 단순한 경우에는 if-else가 더 간단하다.
❌ 2. 범위 조건을 사용할 때
switch는 특정 값과의 정확한 일치(===) 만 검사할 수 있다.
if-else는 범위 조건(>, <, >=, <=) 을 처리할 수 있어, 범위가 필요하면 if-else가 더 적합하다.
🔹 예제: 나이에 따른 등급 분류
let age = 25;
// if-else 사용
if (age < 13) {
console.log("어린이");
} else if (age < 20) {
console.log("청소년");
} else {
console.log("성인");
}
// switch는 범위 조건을 다루기 어려움!
✅ 범위 비교가 필요하면 if-else를 사용해야 한다.
3. 결론
✅ switch는 가독성이 좋고, 성능이 더 나을 수도 있으며, 유지보수가 쉬운 경우에 유용하다.
✅ 하지만 조건이 단순하거나, 범위 비교가 필요하면 if-else가 더 적합할 수도 있다.
✅ 상황에 따라 if-else와 switch를 적절히 선택하는 것이 중요하다. 🚀