3. 선택하고 결정하기 (조건문)/3.2 여러 선택지 중에서 고르기 (switch)

3.2.3 `default` - switch문의 마지막 안전망

thejavascript4kids 2025. 6. 30. 20:08

📘 3.2.3 default - switch문의 마지막 안전망

안녕하세요, 여러분. 오늘은 조금 특별한 이야기를 해보려고 해요.

저는 가끔 버스 정류장에서 방향을 잃고 헤매는 사람들을 봅니다. 목적지를 적어놓은 종이를 들고 있지만, 정작 그 버스는 오지 않죠. 그럴 때 정류장 안내원분이 다가와서 "어디로 가세요?"라고 친절하게 물어봅니다. 그리고는 "아, 그럼 이 버스를 타시면 돼요"라고 대안을 제시해주죠.

switch문의 default가 바로 그런 존재입니다. 우리가 예상하지 못한 상황이 왔을 때, 조용히 다가와서 도움의 손길을 내미는 친구 같은 존재예요.

🧠 새로운 단어들과 친해지기

오늘 만날 단어들을 차근차근 살펴보겠습니다.

단어 설명
default "기본값"이라는 뜻으로, 모든 case에 해당하지 않을 때 마지막으로 실행되는 부분이에요.
예상치 못한 상황 우리가 미리 생각해두지 못한 입력값이나 상황을 말해요.
안전장치 예기치 못한 일이 생겼을 때를 대비해서 미리 준비해둔 보호막 같은 것이에요.
친절한 안내 사용자가 잘못 입력했을 때도 화내지 않고 도움이 되는 방향을 제시하는 것이에요.

✨ default가 뭔지 알아보기

여러분, 생각해보세요. 우리가 일상에서 누군가에게 질문을 할 때, 상대방이 예상치 못한 답을 한다면 어떻게 반응하시나요?

좋은 대화 상대라면 "아, 그런 게 있구나"라며 관심을 보이거나, "그럼 이건 어때?"라며 새로운 방향을 제시해줄 거예요. 절대 "그런 건 몰라"라고 뚝 끊어버리지 않겠죠.

default는 컴퓨터 프로그램이 그런 좋은 대화 상대가 될 수 있도록 도와주는 장치입니다. 사용자가 예상하지 못한 값을 입력해도, 프로그램이 당황하지 않고 적절히 대응할 수 있게 해주죠.

마치 동네 아저씨 같은 존재

제가 어릴 때 살던 동네에는 정말 인상 깊은 아저씨가 계셨어요. 문구점을 운영하시는 분이었는데, 아이들이 이상한 걸 사려고 해도 절대 "그런 건 없어"라고 말씀하지 않으셨어요.

흔한 질문들:

  • "연필 있어요?" → "여기 좋은 연필들이 있어" ✏️
  • "지우개 있어요?" → "분홍색, 하얀색 다 있단다" 🧽
  • "공책 있어요?" → "줄 있는 것, 무지 것 골라봐" 📔

이상한 질문들:

  • "우주선 있어요?" → "우주선은 없지만, 로켓 모양 볼펜은 어떨까?" 🚀
  • "공룡 있어요?" → "공룡은 없어도 공룡 스티커는 있단다" 🦕
  • "으아아아!" → "뭐가 필요한지 천천히 말해봐. 아저씨가 도와줄게" 😊

아저씨는 어떤 엉뚱한 요청에도 당황하지 않고, 항상 대안을 제시해주셨어요. 그래서 동네 아이들이 모두 그 문구점을 좋아했죠. default가 바로 그런 역할을 하는 거예요.

🎯 왜 default를 사용해야 할까요?

프로그래밍을 할 때 default를 사용하는 이유는 간단합니다.

첫째, 사용자를 배려하기 위해서입니다. 누구나 실수할 수 있고, 그럴 때마다 프로그램이 아무 반응도 보이지 않는다면 답답하겠죠.

둘째, 프로그램을 더 견고하게 만들기 위해서입니다. 예상하지 못한 상황에서도 적절히 대응할 수 있는 프로그램이 좋은 프로그램이에요.

셋째, 새로운 가능성을 열어두기 위해서입니다. 때로는 사용자의 "잘못된" 입력이 새로운 아이디어의 시작이 될 수도 있거든요.

⚙️ default 사용법 배우기

default의 사용법은 정말 간단합니다. switch문의 마지막에 작은 문단 하나만 추가하면 돼요.

switch (확인할값) {
    case 첫번째경우:
        // 첫 번째 경우일 때 할 일
        break;
    case 두번째경우:
        // 두 번째 경우일 때 할 일
        break;
    default:
        // 모든 case에 해당하지 않을 때 할 일
        break;
}

실제 예시:

let fruit = "바나나";

switch (fruit) {
    case "사과":
        console.log("🍎 빨간 사과네요!");
        break;
    case "오렌지":
        console.log("🍊 주황색 오렌지네요!");
        break;
    default:
        console.log("🤔 새로운 과일을 만났네요!");
        console.log("어떤 과일인지 더 알려주세요!");
        break;
}

🧪 직접 해보면서 배우기

이제 실제 상황에서 default가 어떻게 우리를 도와주는지 살펴보겠습니다.

🔹 Ex1) 친절한 음료 주문 시스템 만들어보자

학교 매점에서 음료를 주문하는 상황을 생각해볼게요. 메뉴에 없는 음료를 주문했을 때 어떻게 친절하게 응대할 수 있을까요?

// 학생이 주문한 음료를 저장합니다
let studentOrder = "콜라";          // 학생이 주문한 음료

console.log("=== 🏪 학교 매점에 오신 것을 환영합니다 ===");
console.log("주문하신 음료: " + studentOrder);
console.log("");

// switch문으로 주문을 처리해봅시다
switch (studentOrder) {                                 // 주문한 음료를 확인하여
    case "딸기 우유":                                    // 딸기 우유라면
        console.log("🍓 맛있는 딸기 우유 한 개 준비했어요!");  // 딸기 우유 제공
        console.log("💰 가격은 1,500원입니다.");
        break;                                          // 딸기 우유 처리 완료

    case "초콜릿 우유":                                  // 초콜릿 우유라면
        console.log("🍫 달콤한 초콜릿 우유 한 개 준비했어요!"); // 초콜릿 우유 제공
        console.log("💰 가격은 1,500원입니다.");
        break;                                          // 초콜릿 우유 처리 완료

    case "오렌지 주스":                                  // 오렌지 주스라면
        console.log("🍊 상큼한 오렌지 주스 한 개 준비했어요!"); // 오렌지 주스 제공
        console.log("💰 가격은 2,000원입니다.");
        break;                                          // 오렌지 주스 처리 완료

    default:                                            // 메뉴에 없는 음료를 주문했을 때
        console.log("😊 죄송합니다. " + studentOrder + "는 저희 매점에 없어요."); // 정중한 안내
        console.log("🤔 하지만 이런 맛있는 음료들은 어떠신가요?"); // 대안 제시
        console.log("📋 추천 메뉴:");
        console.log("   🍓 딸기 우유 - 달콤하고 부드러워요!");
        console.log("   🍫 초콜릿 우유 - 정말 맛있어요!");
        console.log("   🍊 오렌지 주스 - 상큼하고 시원해요!");
        console.log("💡 이 중에서 다시 선택해주세요!");
        break;                                          // 친절한 안내 완료
}

console.log("🎉 주문 처리가 완료되었습니다!");

🔹 Ex2) 요일별 활동 계획 시스템 만들어보자

요일에 따라 다른 활동을 계획하는 프로그램을 만들어보겠습니다. 잘못된 요일이 입력되었을 때 default가 어떻게 도움을 주는지 살펴보세요.

// 오늘의 요일을 저장합니다
let today = "화성일";              // 실제로는 없는 요일입니다!

console.log("=== 📅 오늘의 활동 계획 시스템 ===");
console.log("입력된 요일: " + today);

// 요일별로 다른 활동을 안내해줍니다
switch (today) {                                          // 입력된 요일을 확인하여
    case "월요일":                                         // 월요일이라면
        console.log("📚 월요일 - 새로운 한 주가 시작되었어요!");
        console.log("✏️ 오늘은 새 연필로 예쁘게 글씨 연습해봅시다!");
        break;                                            // 월요일 활동 안내 완료

    case "화요일":                                         // 화요일이라면
        console.log("🎨 화요일 - 창의력이 넘치는 날이에요!");
        console.log("🖍️ 오늘은 크레파스로 그림을 그려봅시다!");
        break;                                            // 화요일 활동 안내 완료

    case "수요일":                                         // 수요일이라면
        console.log("⚡ 수요일 - 한 주의 중간점이에요!");
        console.log("🏃‍♀️ 오늘은 운동을 해서 기분을 상쾌하게 해봅시다!");
        break;                                            // 수요일 활동 안내 완료

    default:                                              // 잘못된 요일이 입력되었을 때
        console.log("🤔 어? " + today + "라는 요일은 없는 것 같은데요?");     // 정중한 의문 표현
        console.log("💭 혹시 오타가 났을까요?");                     // 친근한 추측
        console.log("📝 정확한 요일 이름들:");                      // 정확한 정보 제공
        console.log("   📅 월요일, 화요일, 수요일, 목요일, 금요일, 토요일, 일요일");
        console.log("💡 이 중에서 하나를 선택해서 다시 말씀해주세요!");
        break;                                            // 친절한 안내 완료
}

🧠 자주 하는 실수와 주의할 점

default를 사용할 때 주의해야 할 몇 가지 사항들을 알아보겠습니다.

❌ 실수 1: default를 아예 사용하지 않기

가장 흔한 실수는 default를 아예 사용하지 않는 것입니다.

let mood = "화남";

// 문제가 있는 코드 (default가 없어요!)
switch (mood) {
    case "기쁨":
        console.log("😊 행복한 하루네요!");
        break;
    case "슬픔":
        console.log("😢 괜찮아요. 내일은 더 좋을 거예요!");
        break;
    // default가 없어서 "화남"을 입력하면 아무것도 출력되지 않습니다!
}

// 개선된 코드 (default 포함!)
switch (mood) {
    case "기쁨":
        console.log("😊 행복한 하루네요!");
        break;
    case "슬픔":
        console.log("😢 괜찮아요. 내일은 더 좋을 거예요!");
        break;
    default:                            // 안전장치 추가!
        console.log("🤔 " + mood + "라는 기분도 있구나!");
        console.log("😄 어떤 기분이든 소중해요!");
        break;
}

❌ 실수 2: default에 break를 빼먹기

default에도 반드시 break를 써주어야 합니다.

// 올바른 방법 (default에도 break!)
switch (color) {
    case "빨강":
        console.log("🔴 정열적인 색깔이네요!");
        break;
    case "파랑":
        console.log("🔵 시원한 색깔이네요!");
        break;
    default:
        console.log("🌈 특별한 색깔이네요!");
        break;                          // ✅ default에도 꼭 break!
}

✏️ 직접 해보기

배운 내용을 연습해보겠습니다. 마치 아이들이 모래밭에서 성을 쌓으며 노는 것처럼, 여러분도 코드를 통해 자신만의 작은 세계를 만들어보세요.

Ex1) 좋아하는 계절에 따라 다른 활동을 추천하는 프로그램에 친절한 default를 추가해보자

let season = "우주";             // 예상하지 못한 계절!

switch (season) {                                       // 계절을 확인하여
    case "봄":                                          // 봄이라면
        console.log("🌸 꽃구경을 하러 나가요!");           // 봄 활동 추천
        break;                                          // 봄 처리 완료
    case "여름":                                        // 여름이라면
        console.log("🏊‍♀️ 시원한 물놀이를 해요!");        // 여름 활동 추천
        break;                                          // 여름 처리 완료
    case "가을":                                        // 가을이라면
        console.log("🍂 단풍구경을 하러 나가요!");          // 가을 활동 추천
        break;                                          // 가을 처리 완료
    case "겨울":                                        // 겨울이라면
        console.log("⛄ 눈사람을 만들어요!");            // 겨울 활동 추천
        break;                                          // 겨울 처리 완료
    default:                                            // 예상하지 못한 계절
        console.log("🌟 와! " + season + "라는 계절은 정말 특별하네요!"); // 긍정적 반응
        console.log("🌍 지구에는 이런 아름다운 계절들이 있어요:");        // 도움이 되는 정보
        console.log("   🌸 봄, ☀️ 여름, 🍂 가을, ❄️ 겨울");
        console.log("💡 이 중에서 선택해서 다시 말씀해주세요!");            // 친절한 안내
        break;                                          // 친절한 안내 완료
}

📚 복습하기 - 지난 시간에 배운 내용도 기억해요!

때로는 뒤를 돌아보는 것이 앞으로 나아가는 데 도움이 됩니다. 1-2단원에서 배운 내용을 다시 한번 살펴보겠습니다.

🔄 1단원 복습: 변수와 데이터 타입

문제: 다음 코드에서 변수들의 데이터 타입을 맞춰보세요!

let myName = "지민";           // 이것은 무슨 타입일까요?
let myAge = 10;               // 이것은 무슨 타입일까요?
let isStudent = true;         // 이것은 무슨 타입일까요?

console.log("이름: " + myName + ", 나이: " + myAge + ", 학생인가요: " + isStudent);

정답과 설명:

  • myName문자열(String) 타입입니다. 따옴표로 둘러싸인 글자들이거든요!
  • myAge숫자(Number) 타입입니다. 따옴표 없이 숫자만 적었기 때문이에요!
  • isStudent불린(Boolean) 타입입니다. true나 false만 값으로 가질 수 있어요!

🔄 2단원 복습: 비교 연산자와 논리 연산자

문제: 다음 계산 결과를 예상해보세요!

let score1 = 85;
let score2 = 90;

let result1 = (score1 > 80) && (score2 > 80);    // 결과는?
let result2 = (score1 === score2);               // 결과는?
let result3 = (score1 !== score2);               // 결과는?

console.log("둘 다 80점 넘었나요? " + result1);
console.log("두 점수가 같나요? " + result2);
console.log("두 점수가 다른가요? " + result3);

정답과 설명:

  • result1true입니다. 85 > 80도 참이고, 90 > 80도 참이니까 "그리고(&&)"를 사용하면 참이에요!
  • result2false입니다. 85와 90은 다른 숫자거든요!
  • result3true입니다. 85와 90은 다른 숫자니까 "다르다(!==)"는 참이에요!

이렇게 지난번에 배운 내용들도 계속 사용하면서 새로운 것을 배우는 거예요. 참 멋지지 않나요? 😊


지금까지 default에 대해 함께 알아보았습니다. default는 우리 프로그램을 더 안전하고 친절하게 만들어주는 소중한 도구입니다. 가장 중요한 것은 항상 default를 사용하는 습관을 기르는 것입니다!

다음 시간에는 또 다른 흥미로운 자바스크립트 이야기를 함께 나누어보겠습니다. 오늘도 수고하셨어요! 🌟

✅ 학습 완료 체크리스트

이번 시간에 배운 내용들을 모두 이해했는지 확인해보세요!

학습 내용 이해했나요?
default의 기본 개념
기본 사용법과 문법
자주 하는 실수들
실전 예제 이해
1-2단원 복습 내용

📂 마무리 정보

오늘 배운 3.2.3 내용이 여러분의 자바스크립트 지식에 잘 자리 잡았나요? 다음 시간에는 더 흥미진진한 내용으로 만나요!

기억할 점: 오늘 배운 내용을 꼭 연습해보시고, 궁금한 점이 있으면 언제든 다시 돌아와서 읽어보세요.


🚀 더 체계적인 JavaScript 학습을 원하신다면?
이 포스팅에서 다룬 내용을 실제로 실습해보세요!
무료 JavaScript 학습 플랫폼에서 단계별 학습과 실시간 코드 실행을 통해
더욱 효과적이고 재미있게 학습하실 수 있습니다.
📝 실시간 코드 실행 📊 학습 진도 관리 👥 체계적 커리큘럼
📚 171개 체계적 학습레슨 · 📋 855개 4지선다 연습문제 · 🆓 완전 무료 · ⚡ 즉시 시작