2. 계산하고 비교하기 (연산자)/2.3 논리적으로 생각하기 (논리 연산자)

2.3.2 `||` - 하나만 맞아도 통과시켜주는 친절한 검사관

thejavascript4kids 2025. 6. 29. 06:54

📘 2.3.2 || - 하나만 맞아도 통과시켜주는 친절한 검사관

안녕하세요, 여러분. 지난 시간에 모든 조건이 완벽해야만 통과시켜주는 까다로운 && 검사관을 만났었죠? 오늘은 정반대 성격을 가진 정말 친절한 친구를 만나러 갈 거예요. 바로 || 검사관이랍니다.

이 친구는 마치 우리 할머니처럼 여러 조건 중 하나만 맞아도 기꺼이 통과시켜주는 따뜻한 마음을 가지고 있어요. "이것도 좋고, 저것도 좋고, 그것도 괜찮아!"라고 말하는 정말 관대한 성격이랍니다.

여러분, 집에서 간식을 달라고 할 때를 생각해보세요. "과자나 사탕이나 아이스크림 중에 아무거나 하나만 주세요!"라고 하면, 그 중 하나만 있어도 기뻐하잖아요? || 검사관이 바로 그런 마음을 가진 친구예요.

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

우리가 만날 새로운 친구들에 대해 쉽게 알아보아요. 마치 새로운 놀이 친구들을 소개받는 것처럼요.

단어 쉬운 설명
**선택 도우미 (
**하나라도 검사관 (
빠른 성공 기능 첫 번째 조건이 맞으면 나머지는 확인하지 않고 바로 "성공!"이라고 말하는 똑똑한 기능이에요
기본값 도우미 원하는 것이 없을 때 "그럼 이걸로 할까?"라고 대신해주는 친절한 도우미예요

이런 단어들은 우리가 컴퓨터와 더 유연하게 대화하는 데 도움을 주는 중요한 친구들이에요.

|| 검사관을 만나보기

자, 이제 우리의 주인공 || 검사관을 제대로 만나볼까요? 이 친구는 자바스크립트에서 "하나만 맞아도 괜찮아!"라는 철학을 가지고 있는 특별한 검사관이에요.

이 검사관의 가장 큰 특징은 포용하는 마음이에요. && 검사관이 완벽주의자였다면, || 검사관은 기회를 주는 낙천주의자라고 할 수 있어요. 여러 조건 중에서 단 하나만 만족되어도 전체를 성공으로 만들어주거든요.

일상생활에서 우리가 자주 쓰는 "또는"이라는 말과 정확히 같은 일을 해요. "사과를 먹거나 또는 바나나를 먹거나 또는 오렌지를 먹어도 괜찮아"라고 할 때, 그 중 하나만 먹어도 간식을 먹은 게 되는 것처럼요.

|| 검사관도 빠른 성공 기능이 있어요. 하지만 && 검사관과는 반대예요. 첫 번째 조건이 맞으면 "이미 성공했으니까 다른 건 확인할 필요 없어!"라고 말하면서 바로 성공을 선언해줘요.

특히 이 친구는 기본값 도우미를 정말 잘 사용해요. 값 || 기본값 형태로 사용하면, 원하는 값이 없거나 사용할 수 없을 때 자동으로 안전한 기본값을 만들어줘요. 마치 "1순위가 안 되면 2순위, 그것도 안 되면 3순위"처럼 계획을 세워주는 거예요.

실제로 우리가 앱이나 웹사이트를 만들 때도 사용자 선택권 주기, 문제 해결하기, 설정 관리하기 등 여러 상황에서 이 친구가 사용자를 더 편하게 만들어주는 데 중요한 역할을 해요.

재미있는 비유: 놀이공원의 친절한 입장 안내 아저씨

|| 검사관을 더 쉽게 이해하기 위해 '놀이공원의 친절한 입장 안내 아저씨' 이야기를 들려드릴게요.

놀이공원 입구에는 정말 친절하고 융통성 있는 안내 아저씨가 계세요. 이 아저씨는 방문객들이 다양한 방법으로 놀이공원을 즐길 수 있도록 여러 가지 입장 방법을 알려주세요.

하루 이용권을 가져와도 좋고, 1년 회원권이 있어도 좋고, 무료 초대권을 받았어도 좋고, 심지어 인터넷 할인 쿠폰만 있어도 입장할 수 있어요. 이 중에서 어떤 것 하나만 가지고 있어도 "어서 오세요! 즐거운 하루 보내세요!"라고 환하게 웃으며 맞이해주셔요.

특히 이 아저씨는 시간도 아껴주세요. 방문객이 하루 이용권을 보여주면, 다른 것들은 확인하지 않고 바로 "들어가세요!"라고 해주셔요. 시간도 절약되고 방문객도 빨리 들어갈 수 있어서 모두가 행복하죠.

만약 어떤 방법으로도 입장할 수 없는 상황이라면, 안내 아저씨는 "아쉽지만 입장권을 사주세요. 하지만 걱정 마세요, 여러 할인 혜택이 있어요!"라고 친절하게 안내해주셔요.

이처럼 || 검사관은 다양한 가능성을 열어두고 사용자에게 선택권을 주는 관대하고 친절한 시스템 같아요.

🎯 왜 친절한 검사관이 좋을까요?

그럼 왜 많은 프로그래머들이 친절한 || 검사관을 좋아할까요? 여러 가지 좋은 이유들이 있어요.

첫 번째는 사용자가 더 편해져요. 사용자에게 여러 가지 선택지를 주어서 더 편리하고 자유롭게 서비스를 이용할 수 있게 만들어줘요. 예를 들어, 로그인할 때 이메일로도 할 수 있고, 전화번호로도 할 수 있고, 카카오톡으로도 할 수 있다면 사용자는 자신이 가장 편한 방법을 선택할 수 있어요.

두 번째는 안전하고 믿을 수 있어요. 주요 방법이 실패했을 때 다른 방법을 자동으로 사용하거나, 원하는 정보가 없을 때 기본값을 제공해서 프로그램이 멈추지 않고 계속 작동할 수 있게 만들어줘요.

세 번째는 코드가 더 간단해져요. 복잡한 조건문을 간단한 || 검사관으로 바꿀 수 있어서 코드가 더 읽기 쉽고 이해하기 쉬워져요. 특히 기본값 도우미는 정말 깔끔하고 직관적이에요.

마지막으로 프로그램이 더 빨라져요. 빠른 성공 기능 덕분에 불필요한 계산이나 작업을 줄일 수 있어서 프로그램이 더 빠르게 실행돼요.

⚙️ 검사관과 대화하는 방법 배우기

|| 검사관과 대화하는 방법은 정말 간단해요. 여러 개의 조건을 ||로 연결하면 돼요!

// 기본적인 대화 방법
let result = 조건1 || 조건2;

// 여러 조건을 한 번에 물어보기
let result = 조건1 || 조건2 || 조건3;

// 기본값 도우미 사용하기
let finalValue = 원하는값 || 기본값;

검사관의 답변 패턴:

참 || 참     // 참 (하나라도 맞으니까 성공!)
참 || 거짓   // 참 (첫 번째가 맞으니까 성공!)
거짓 || 참   // 참 (두 번째가 맞으니까 성공!)
거짓 || 거짓 // 거짓 (모두 틀려서 실패)

실제로 사용하는 예시:

let hasEmail = true;       // 이메일 있는지
let hasPhone = false;      // 전화번호 있는지
let hasKakao = false;      // 카카오톡 있는지

// 로그인 가능한지 검사관에게 물어보기
let canLogin = hasEmail || hasPhone || hasKakao; // true

🧪 직접 해보면서 배우기

이제 실제로 || 검사관이 어떻게 일하는지 함께 실험해볼게요!

🔹 첫 번째 실험: 검사관의 기본 동작 확인하기

가장 기본적인 상황에서 || 검사관이 어떻게 답변하는지 살펴보아요.

// 기본적인 참/거짓으로 실험해보기
console.log("=== || 검사관의 기본 답변 패턴 ===");

// 모든 경우를 확인해보기
let case1 = true || true;           // 둘 다 맞음
let case2 = true || false;          // 첫 번째만 맞음  
let case3 = false || true;          // 두 번째만 맞음
let case4 = false || false;         // 둘 다 틀림

console.log("참 || 참 =", case1);      // true가 나와요!
console.log("참 || 거짓 =", case2);     // true가 나와요!
console.log("거짓 || 참 =", case3);     // true가 나와요!  
console.log("거짓 || 거짓 =", case4);    // false가 나와요

// 실제 생활로 바꿔서 실험해보기
let hasCreditCard = false;          // 신용카드 있나요?
let hasDebitCard = true;            // 체크카드 있나요?
let hasCash = false;                // 현금 있나요?
let hasPoints = true;               // 적립금 있나요?

console.log("\n=== 실제 상황으로 실험해보기 ===");
console.log("신용카드 있나요?", hasCreditCard);
console.log("체크카드 있나요?", hasDebitCard);
console.log("현금 있나요?", hasCash);
console.log("적립금 있나요?", hasPoints);

// 다양한 결제 방법 조합해보기
let canPayWithCard = hasCreditCard || hasDebitCard;
console.log("\n카드로 결제 가능한가요?", canPayWithCard);      // true

let canPayOffline = hasCash || hasPoints;
console.log("현금이나 적립금으로 결제 가능한가요?", canPayOffline);       // true

let canPayAnything = hasCreditCard || hasDebitCard || hasCash || hasPoints;
console.log("어떤 방법으로든 결제 가능한가요?", canPayAnything); // true

이 실험에서 우리는 || 검사관이 어떻게 여러 조건 중 하나만 만족되어도 true를 반환하는지 확인할 수 있어요. 또한 빠른 성공 기능을 통해 불필요한 계산을 피하는 방법도 살펴보았어요.

🔹 두 번째 실험: 게임 입장 시스템 만들기

실제 게임에서 사용자에게 다양한 입장 방법을 제공하는 시스템을 만들어보아요.

// 온라인 게임 입장 자격 확인 시스템
console.log("=== 온라인 게임 입장 자격 확인 ===");

// 플레이어 정보
let playerName = "박철수";
let isPremium = false;              // 프리미엄 회원인지
let hasFreePass = true;             // 무료 패스 있는지
let isFirstTime = false;            // 처음 하는지
let hasInviteCode = false;          // 초대 코드 있는지
let isStudent = true;               // 학생인지
let hasReward = false;              // 보상 받은 게 있는지

console.log("플레이어:", playerName);
console.log("프리미엄 회원:", isPremium);
console.log("무료 패스:", hasFreePass);
console.log("처음 방문:", isFirstTime);
console.log("초대 코드:", hasInviteCode);
console.log("학생 신분:", isStudent);
console.log("보상 보유:", hasReward);

// 다양한 입장 자격 조건들
let hasSpecialPass = isPremium || hasFreePass;           // 특별 패스 있는지
let hasSpecialRight = isFirstTime || hasInviteCode;      // 특별 권한 있는지
let hasEducationBenefit = isStudent || hasReward;        // 교육 혜택 있는지

console.log("\n=== 자격 조건 하나씩 확인하기 ===");
console.log("특별 패스:", hasSpecialPass);                // true (무료 패스 있어서)
console.log("특별 권한:", hasSpecialRight);              // false
console.log("교육 혜택:", hasEducationBenefit);          // true (학생이어서)

// 최종 입장 가능 여부 (여러 경로 중 하나만 만족하면 됨)
let canEnterGame = hasSpecialPass || hasSpecialRight || hasEducationBenefit;
console.log("\n✅ 게임 입장 가능:", canEnterGame);      // true

if (canEnterGame) {
    console.log("🎉 게임 입장이 허가되었어요!");

    // 어떤 경로로 허가되었는지 알려주기
    if (hasSpecialPass) {
        console.log("📝 입장 경로: 특별 패스");
        if (isPremium) {
            console.log("   - 프리미엄 회원 혜택");
        }
        if (hasFreePass) {
            console.log("   - 무료 패스 사용");
        }
    }
    if (hasEducationBenefit) {
        console.log("📝 입장 경로: 교육 혜택");
        if (isStudent) {
            console.log("   - 학생 신분 혜택");
        }
        if (hasReward) {
            console.log("   - 보상 아이템 사용");
        }
    }
} else {
    console.log("❌ 입장 조건에 맞지 않아요.");
}

🔹 세 번째 실험: 기본값 도우미와 안전한 정보 처리

|| 검사관의 가장 실용적인 활용법 중 하나인 기본값 도우미와 안전한 정보 처리 방법을 알아보아요.

// 사용자 프로필 완성 시스템
console.log("=== 사용자 프로필 완성 시스템 ===");

// 사용자가 입력한 정보 (일부가 비어있거나 없을 수 있어요)
let firstName = "";                     // 빈 이름
let lastName = "김";                    // 성은 있음
let nickname = null;                    // 별명 없음
let email = "user@email.com";           // 이메일 있음
let phone = undefined;                  // 전화번호 정해지지 않음
let intro = "";                         // 빈 자기소개
let website = null;                     // 웹사이트 없음
let city = "서울";                      // 사는 곳은 있음

console.log("=== 원래 사용자 입력 ===");
console.log("이름:", firstName);
console.log("성:", lastName);
console.log("별명:", nickname);
console.log("이메일:", email);
console.log("전화번호:", phone);
console.log("자기소개:", intro);
console.log("웹사이트:", website);
console.log("사는 곳:", city);

// || 검사관으로 안전한 기본값 설정하기
let showName = firstName || lastName || nickname || "사용자";
let fullName = (firstName || "") + " " + (lastName || "");
let contactEmail = email || "이메일 없음";
let contactPhone = phone || "전화번호 없음";
let userIntro = intro || "자기소개가 없어요.";
let userWebsite = website || "홈페이지 없음";
let userCity = city || "사는 곳 비공개";

// 이름 정리하기 (앞뒤 공백 제거) - 우리가 배운 내용만 사용
if (fullName === " ") {
    fullName = "이름 없음";
}

console.log("\n=== 안전한 프로필 정보 ===");
console.log("보여줄 이름:", showName);          // "김"
console.log("전체 이름:", fullName);             // " 김"
console.log("이메일:", contactEmail);            // "user@email.com"
console.log("전화번호:", contactPhone);         // "전화번호 없음"
console.log("자기소개:", userIntro);             // "자기소개가 없어요."
console.log("웹사이트:", userWebsite);           // "홈페이지 없음"
console.log("사는 곳:", userCity);              // "서울"

🧚‍♀️ 이야기로 다시 배우기: 학교의 친절한 체육관 관리선생님

우리가 배운 내용을 조용한 이야기로 다시 정리해볼게요.

학교에는 세상에서 가장 친절하고 융통성 있는 체육관 관리선생님이 계셨어요. 이 선생님은 || 선생님이라고 불렸는데, 그 이유는 학생들이 체육관을 이용할 수 있는 여러 가지 방법을 모두 인정해주었기 때문이에요.

체육관에 들어가는 방법은 정말 다양했어요. 체육복을 입고 와도 되고, 운동화를 신고 와도 되고, 물통을 가져와도 되고, 심지어 운동하고 싶다는 마음만 있어도 환영해주었어요.

특히 이 선생님은 정말 효율적이었어요. 학생이 체육복을 입고 오면 다른 것들은 확인하지 않고 바로 "어서 와! 신나게 운동해봐!"라고 반갑게 맞이해주었죠.

하지만 가장 놀라운 건 선생님의 배려하는 마음이었어요. 학생이 아무것도 준비하지 못했을 때도 "괜찮아! 오늘은 구경만 해도 돼. 다음에 준비해서 오면 돼!"라고 따뜻하게 말해주었거든요.

어떤 학생은 체육복을 잊어버렸는데도 "운동화라도 있으니까 괜찮아!"라고 하며 들여보내주었고, 아무것도 없는 학생에게는 "운동하고 싶은 마음이 있으니까 들어와서 친구들 응원이라도 해줘!"라고 다른 방법을 제시해주었어요.

|| 선생님 덕분에 학교의 모든 학생들이 체육관에서 편안하게 운동할 수 있었고, 누구도 소외되지 않았어요. 학생들은 "선택할 수 있어서 좋다"고 행복해했어요.

결국 || 검사관은 다양성을 인정하고 기회를 주는 포용적인 시스템을 만들어주는 도구인 거죠.

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

친구들이 || 검사관을 사용할 때 자주 하는 실수들을 살펴보고, 어떻게 피할 수 있는지 알아보아요.

❌ 실수 1: 거짓 값들을 제대로 이해하지 못하기

let userAge = 0;                    // 0은 거짓 값이에요
let userScore = "";                 // 빈 글자도 거짓 값이에요
let isFinished = false;             // false도 거짓 값이에요

// ❌ 예상과 다른 결과가 나올 수 있어요
let showAge = userAge || 25;               // 0 || 25 = 25 (실제로는 0세인데!)
let showScore = userScore || "점수 없음";   // "" || "점수 없음" = "점수 없음"
let status = isFinished || "진행 중";       // false || "진행 중" = "진행 중"

console.log("나이:", showAge);              // 25 (실제 나이 0이 무시됨)
console.log("점수:", showScore);            // "점수 없음" (빈 점수가 무시됨)
console.log("상태:", status);               // "진행 중" (완료 상태가 무시됨)

// ✅ 올바른 확인 방법 (우리가 배운 내용만 사용)
let correctAge;
if (userAge !== null && userAge !== undefined) {
    correctAge = userAge;
} else {
    correctAge = 25;
}

let correctScore;
if (userScore !== null && userScore !== undefined) {
    correctScore = userScore;
} else {
    correctScore = "점수 없음";
}

let correctStatus;
if (isFinished !== null && isFinished !== undefined) {
    if (isFinished === true) {
        correctStatus = "완료";
    } else {
        correctStatus = "진행 중";
    }
} else {
    correctStatus = "상태 모름";
}

console.log("정확한 나이:", correctAge);     // 0 (올바른 값)
console.log("정확한 점수:", correctScore);   // "" (올바른 값)
console.log("정확한 상태:", correctStatus); // "진행 중" (올바른 값)

0, false, 빈 글자도 의미가 있는 값일 수 있으므로 단순히 ||로 기본값을 설정할 때는 주의해야 해요.

❌ 실수 2: 조건의 순서를 잘못 정하기

let isVIP = false;                  // VIP 회원 아님
let hasCoupon = true;               // 쿠폰 있음
let hasPoints = false;              // 적립금 없음

// ❌ 비효율적인 순서 - 가능성이 낮은 조건을 먼저 확인
let canGetDiscount1 = isVIP || hasCoupon || hasPoints;

// ✅ 효율적인 순서 - 가능성이 높은 조건을 먼저 확인
let canGetDiscount2 = hasCoupon || isVIP || hasPoints;

console.log("할인 가능1:", canGetDiscount1);    // true (하지만 비효율적)
console.log("할인 가능2:", canGetDiscount2);    // true (더 효율적)

빠른 성공 기능을 생각해서 true가 될 가능성이 높은 조건을 앞에 두면 더 빠르게 결과를 얻을 수 있어요.

마음을 담아 준비한 연습 문제들

여러분이 지금까지 배운 것들을 차분히 정리해볼 수 있는 시간을 마련했어요. 이 문제들은 마치 따스한 오후 햇살처럼, 여러분의 이해를 조용히 깊게 해줄 거예요.

문제를 풀면서 서두르지 마세요. 컴퓨터 언어도 결국 우리가 일상에서 쓰는 말처럼, 천천히 익혀가면 돼요. 여러분 각자의 속도에 맞춰 차근차근 해보세요.

Ex1) 여러 연락 방법 중 사용 가능한 게 있는지 확인해보자

// 연락 수단들을 담을 상자들을 만들어요
let hasEmail = false;       // 이메일 있나요?
let hasPhone = true;        // 전화번호 있나요?
let hasKakao = false;       // 카카오톡 있나요?

// || 검사관에게 각각 물어보기
let canContact = hasEmail || hasPhone || hasKakao;     // 연락할 수 있나요?
let canOnlineLogin = hasEmail || hasKakao;             // 온라인 로그인할 수 있나요?

// 결과 확인하기
console.log("연락 가능한가요?", canContact);         // true (전화번호 있어서)
console.log("온라인 로그인 가능한가요?", canOnlineLogin);  // false

Ex2) 사용자 정보에 기본값을 설정해보자

// 사용자가 입력한 정보 (일부가 비어있어요)
let userName = "";                  // 빈 이름
let userEmail = null;               // 이메일 없음
let userPhone = undefined;          // 전화번호 정해지지 않음
let userAge = 0;                    // 나이 0세 (이건 실제 값일 수 있어요!)

// || 검사관의 기본값 도우미 사용하기
let profileName = userName || "익명 사용자";        // 이름이 없으면 "익명 사용자"
let profileEmail = userEmail || "이메일 없음";      // 이메일이 없으면 "이메일 없음"
let profilePhone = userPhone || "전화번호 없음";    // 전화번호가 없으면 "전화번호 없음"

console.log("프로필 이름:", profileName);
console.log("프로필 이메일:", profileEmail);
console.log("프로필 전화번호:", profilePhone);

// 나이는 특별히 주의해서 처리하기
let profileAge;
if (userAge !== null && userAge !== undefined) {
    profileAge = userAge;           // 0도 유효한 나이예요
} else {
    profileAge = 18;                // 정말 없을 때만 기본값 사용
}
console.log("프로필 나이:", profileAge);  // 0 (올바른 값)

Ex3) 놀이동산 입장권 확인 시스템 만들기

// 입장권 종류들
let hasDayPass = false;         // 하루 이용권
let hasSeasonPass = true;       // 시즌 이용권
let hasFreeTicket = false;      // 무료 입장권
let hasGroupTicket = false;     // 단체 입장권

// 여러 방법 중 하나만 있으면 입장 가능
let canEnter = hasDayPass || hasSeasonPass || hasFreeTicket || hasGroupTicket;

console.log("놀이동산 입장 가능:", canEnter);  // true (시즌 이용권 있어서)

// 어떤 입장권으로 들어가는지 확인
if (canEnter) {
    console.log("🎢 놀이동산에 오신 것을 환영합니다!");

    if (hasDayPass) {
        console.log("입장 방법: 하루 이용권");
    } else if (hasSeasonPass) {
        console.log("입장 방법: 시즌 이용권");
    } else if (hasFreeTicket) {
        console.log("입장 방법: 무료 입장권");
    } else if (hasGroupTicket) {
        console.log("입장 방법: 단체 입장권");
    }
} else {
    console.log("❌ 입장권이 필요해요.");
}

🔄 복습 문제: 이전 단원들과 2.3.1 내용 복습하기

이전에 배운 내용들을 잊지 않도록 복습해볼게요!

복습 문제 1) 변수와 데이터 타입 (1단원 복습)

// 1단원에서 배운 변수 만들기와 데이터 타입을 복습해보세요!

// let과 const로 다양한 상자 만들기
let currentScore = 85;      // 현재 점수 (바뀔 수 있음)
const maxScore = 100;       // 최고 점수 (바뀌지 않음)
let playerName = "이영희";  // 플레이어 이름
let isPlaying = true;       // 게임 중인지

console.log("현재 점수:", currentScore);
console.log("최고 점수:", maxScore);
console.log("플레이어:", playerName);
console.log("게임 중:", isPlaying);

// 데이터 타입 확인하기
console.log("점수 타입:", typeof currentScore);     // number
console.log("이름 타입:", typeof playerName);       // string
console.log("게임상태 타입:", typeof isPlaying);    // boolean

복습 문제 2) 계산과 비교 연산자 (2.1, 2.2단원 복습)

// 2.1단원: 계산하기 복습
let math1 = 15;
let math2 = 4;

console.log("=== 계산 연산자 복습 ===");
console.log("더하기:", math1 + math2);     // 19
console.log("빼기:", math1 - math2);       // 11
console.log("곱하기:", math1 * math2);     // 60
console.log("나누기:", math1 / math2);     // 3.75
console.log("나머지:", math1 % math2);     // 3

// 2.2단원: 비교 연산자 복습
let height1 = 150;
let height2 = 145;

console.log("\n=== 비교 연산자 복습 ===");
console.log("같은 키:", height1 === height2);      // false
console.log("다른 키:", height1 !== height2);      // true
console.log("첫번째가 더 큼:", height1 > height2);  // true
console.log("두번째가 더 큼:", height1 < height2);  // false
console.log("첫번째가 이상:", height1 >= 150);      // true

복습 문제 3) && 연산자 (2.3.1단원 복습)

// 바로 전에 배운 && 연산자 복습하기
let hasHomework = true;     // 숙제 있나요?
let hasTime = false;        // 시간 있나요?
let hasEnergy = true;       // 에너지 있나요?

console.log("=== && 연산자 복습 ===");

// 모든 조건이 맞아야 성공하는 && 검사관
let canStudy = hasHomework && hasTime && hasEnergy;     // 공부할 수 있나요?
let canDoHomework = hasHomework && hasTime;             // 숙제할 수 있나요?
let isReady = hasTime && hasEnergy;                     // 준비되었나요?

console.log("공부 가능:", canStudy);        // false (시간이 없어서)
console.log("숙제 가능:", canDoHomework);   // false (시간이 없어서)
console.log("준비 완료:", isReady);         // false (시간이 없어서)

// && vs || 비교해보기
let orResult = hasHomework || hasTime || hasEnergy;     // 하나라도 있으면 true
let andResult = hasHomework && hasTime && hasEnergy;    // 모두 있어야 true

console.log("|| 결과:", orResult);         // true (숙제와 에너지가 있어서)
console.log("&& 결과:", andResult);        // false (시간이 없어서)

설명: && 검사관은 모든 조건이 참이어야 true를, || 검사관은 하나라도 참이면 true를 반환한다는 차이를 명확히 기억하세요!

✅ 학습 완료 체크리스트

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

학습 내용 이해했나요?
|| 연산자의 기본 개념
기본 사용법과 문법
빠른 성공 기능 이해
기본값 도우미 활용법
거짓 값 주의사항
실전 예제 이해
이전 단원들 복습 완료
&& 와 || 차이점 이해

📂 마무리 정보

오늘 배운 2.3.2 내용이 여러분의 자바스크립트 지식 상자에 잘 저장되었나요?

지금까지 || 검사관의 모든 특징을 자세히 살펴보았어요. 이 친구는 관대하고 유연해서 사용자에게 다양한 선택지를 제공하고, 안전한 기본값을 설정할 수 있게 해주는 소중한 도우미예요. 앞으로 여러 대안이 필요한 상황에서 || 검사관을 똑똑하게 활용해보세요!

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



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