switch 문은 여러 조건을 한 번에 비교하여 처리할 때 유용하게 사용
여러 if-else if 문을 사용하는 대신, switch 문을 사용하면 코드가 간결하고 읽기 쉽다.
switch 문은 특정 변수의 값에 따라 실행할 코드 블록을 선택
switch (expression) {
case value1:
// expression이 value1일 때 실행되는 코드
break;
case value2:
// expression이 value2일 때 실행되는 코드
break;
case value3:
// expression이 value3일 때 실행되는 코드
break;
default:
// 위의 case들이 모두 맞지 않으면 실행되는 코드
}
expression: 비교할 값이 들어가는 부분 예를 들어, 숫자, 문자열, 또는 변수
let day = prompt("1~7 입력 "); // 1~7중 입력
day = Number(day); // 입력값을 숫자로 변환
switch (day) {
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;
case 7:
console.log("일요일");
break;
default:
console.log("1~7 중 입력");
}
let day = prompt("1 ~ 7 또는 일 ~ 칠 입력");
let dayNum = Number(day); // day를 숫자로 변환
if (!isNaN(dayNum)) { // 숫자일 때 처리
switch(dayNum) {
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;
case 7:
console.log("일요일");
break;
default:
console.log("1~7 중 입력");
}
} else if (typeof day === 'string') { // 문자열일 때 처리
switch (day) {
case "일":
console.log("월요일");
break;
case "이":
console.log("화요일");
break;
case "삼":
console.log("수요일");
break;
case "사":
console.log("목요일");
break;
case "오":
console.log("금요일");
break;
case "육":
console.log("토요일");
break;
case "칠":
console.log("일요일");
break;
default:
console.log("일, 이, 삼, 사, 오, 육, 칠 중 입력");
}
} else {
alert("숫자(1~7) 또는 문자(일~칠)를 입력하세요.");
}
let day = prompt("1 ~ 7 또는 일 ~ 칠 입력");
// 숫자와 문자에 대한 요일 매핑 객체
const daysOfWeek = {
1: "월요일",
2: "화요일",
3: "수요일",
4: "목요일",
5: "금요일",
6: "토요일",
7: "일요일",
일: "월요일",
이: "화요일",
삼: "수요일",
사: "목요일",
오: "금요일",
육: "토요일",
칠: "일요일"
};
let dayNum = Number(day);// 입력을 숫자로 변환
// 숫자일 때 처리
if (!isNaN(dayNum) && daysOfWeek[dayNum]) {
console.log(daysOfWeek[dayNum]);
}
// 문자일 때 처리
else if (daysOfWeek[day]) {
console.log(daysOfWeek[day]);
} else {
alert("숫자(1~7) 또는 문자(일~칠)를 입력하세요.");
}
let score = prompt("점수 입력");
switch (true) {
case (score >= 101):
console.log("100이하로");
break;
case (score >= 90):
console.log("A 학점입니다.");
break;
case (score >= 80):
console.log("B 학점입니다.");
break;
case (score >= 70):
console.log("C 학점입니다.");
break;
default:
console.log("F 학점입니다.");
}
티켓 종류 ("학생", "일반인", "노인", "어린이")
학생: 10,000원
일반인: 20,000원
노인: 10,000원
어린이: 5,000원
회원 유형 ("단체", "VIP", "일반")
단체(10명 이상): 50% 할인
VIP: 30% 할인
일반: 할인 없음
let ticket = prompt("학생, 일반, 노인, 어린이"); // 1차 종류 입력
let counter = prompt("단체, VIP, 일반"); // 2차 유형 입력
let basePrice //기본 가격 설정
switch(ticket){ //1차 종류에 대한 처리
case "학생":
basePrice = 10000;
break;
case "일반":
basePrice = 20000;
break;
case "노인":
basePrice = 10000;
break;
case "어린이":
basePrice = 5000;
break;
default:
console.log("잘못된 티켓");
break;
}
let final = basePrice; 1차에 대한 결과값에 유형 추가를 위한 처리
switch(counter){ //2차 유형에 대한 처리
case "단체":
final = basePrice * 0.5;
break;
case "VIP":
final = basePrice * 0.7;
break;
case "일반":
// 일반은 기본 가격 그대로
break;
default:
console.log("잘못된 회원");
break;
}
// basePrice 값이 맞게 들어왔으면 실행하게
if(basePrice) {
console.log(`최종가격은 : ${final}원`);
}
예시1)
티켓 종류: 어린이
회원 유형: 단체
최종 가격: 2500원 (5,000원에서 50% 할인)
예시2)
티켓 종류: 학생
회원 유형: 일반
최종 가격: 10000원