2. 계산하고 비교하기 (연산자)/2.2 크기 비교하기 (비교 연산자)

2.2.3 `==`와 `===` - 자바스크립트의 쌍둥이 비교 친구들

thejavascript4kids 2025. 6. 29. 06:45

📘 2.2.3 ===== - 자바스크립트의 쌍둥이 비교 친구들

지금까지 함께 걸어온 이 길에서, 우리는 값이 똑같은지 확인하는 ===와 크기를 비교하는 >, < 같은 도구들을 만나보았습니다. 이제 우리 앞에는 정말 흥미로운 이야기가 놓여 있어요. 자바스크립트 세계에는 겉모습은 비슷하지만 성격이 완전히 다른 쌍둥이가 살고 있거든요.

바로 =====라는 비교하는 친구들입니다!

생각해보세요. 우리 주변에서도 비슷하게 생긴 쌍둥이를 본 적이 있을 거예요. 얼굴은 비슷하지만 성격은 완전히 다른 친구들처럼, 이 두 비교 도구도 정말 그렇습니다. 한 명은 관대하고 포용적이며, 다른 한 명은 정확하고 엄격하죠.

오늘 우리가 만날 이 쌍둥이의 이야기는 단순히 기술적인 차이를 넘어서, 우리가 어떻게 더 안전하고 예측 가능한 코드를 작성할 수 있는지에 대한 지혜를 담고 있습니다.

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

비교의 새로운 세계로 들어가며 만날 단어들을 부드럽게 익혀보겠습니다.

단어 따뜻한 설명
느슨한 동등 친구 (==) 비교할 때 "음... 비슷하면 같은 거예요"라고 말하는 너그러운 친구입니다
엄격한 동등 친구 (===) 비교할 때 "정확히 똑같아야 합니다"라고 말하는 신중한 친구입니다
타입 변환 서로 다른 종류의 것들을 같은 종류로 조용히 바꿔주는 신기한 기능입니다
자동 변환 컴퓨터가 알아서 척척 종류를 바꿔주는 편리한 기능입니다

이 단어들은 우리가 앞으로 만날 친구들의 특별한 능력을 설명하는 소중한 열쇠입니다!

✨ 쌍둥이 친구들을 만나보기

자, 이제 우리의 주인공들을 제대로 만나볼 시간입니다! 자바스크립트 세계에는 정말 특별한 쌍둥이가 살고 있어요. 이름이 =====인데, 둘 다 "이것과 저것이 같은가?"를 알려주는 일을 합니다.

첫 번째 친구인 =="관대한 친구"입니다. 이 친구는 "어? 5와 '5'? 둘 다 5를 말하는 거니까 같은 거지!"라고 생각해요. 심지어 숫자 1true를 보면서도 "둘 다 '하나'나 '참'을 의미하니까 똑같아!"라고 판단하죠.

두 번째 친구인 ==="엄격한 친구"입니다. 이 친구는 "잠깐! 5는 숫자고 '5'는 글자예요! 완전히 다른 거예요!"라고 말해요. 모든 것이 정확히 똑같아야만 "같다"고 인정해주는 신중한 성격입니다.

처음에는 관대한 친구가 더 좋아 보이지만, 실제로는 엄격한 친구가 우리에게 더 도움이 됩니다. 왜냐하면 정확한 기준으로 판단해주어야 나중에 더 큰 문제가 생기지 않거든요!

일상의 이야기: 우리 동네 두 선생님

우리 동네에는 성격이 완전히 다른 두 선생님이 계십니다.

관대한 == 선생님은 수학 시간에 답이 5인 문제에서 학생이 "5"라고 글자로 써도 "5를 말하는 거니까 맞아요!"라고 하셨어요. 영어 문제에서 true라고 써야 하는데 1을 써도 "참이나 하나를 의미하니까 똑같아요!"라고 인정해주셨죠.

엄격한 === 선생님은 "숫자 5와 글자 '5'는 완전히 달라요! 틀렸어요!"라고 하셨어요. true를 써야 하는 곳에 1을 쓰면 "참/거짓과 숫자는 완전히 다른 거예요! 틀렸어요!"라고 구분하셨죠.

처음에는 관대한 선생님이 더 좋아 보였지만, 시간이 지나니까 엄격한 선생님께 배운 친구들이 더 정확하게 문제를 해결할 수 있게 되었어요. 코딩에서도 마찬가지입니다!

🎯 왜 엄격한 친구를 더 좋아할까요?

그럼 왜 많은 코딩하는 사람들이 엄격한 === 친구를 더 좋아할까요? 여러 가지 좋은 이유들이 있습니다.

첫 번째는 예상하기 쉬워요. === 친구를 사용하면 결과를 미리 알 수 있어요. 숫자 5와 글자 "5"를 비교하면 항상 "다르다"고 말할 거예요. 하지만 == 친구는 가끔 깜짝 놀랄 결과를 보여주거든요!

두 번째는 실수를 방지해줘요. == 친구의 자동 변환 기능은 때로 우리가 원하지 않는 결과를 만들어낼 수 있어요. 예를 들어, 사용자가 입력한 글자 "0"false를 비교하면 ==는 "같다"고 하는데, 이게 정말 우리가 원한 결과일까요?

세 번째는 코드가 더 명확해져요. ===를 사용하면 다른 사람들이 코드를 읽을 때 "아, 이 비교는 정확히 똑같아야 하는구나"라고 바로 이해할 수 있어요.

⚙️ 친구들과 대화하는 방법 배우기

두 친구와 대화하는 방법은 정말 간단합니다. 하지만 그 결과는 완전히 다를 수 있어요!

// 관대한 친구와 대화하기 (값만 비교해줘)
let result1 = 값1 == 값2;

// 엄격한 친구와 대화하기 (값과 종류 모두 비교해줘)
let result2 = 값1 === 값2;

반대로 질문하는 방법도 있어요:

// 관대한 친구에게 "다른지" 물어보기
let result3 = 값1 != 값2;

// 엄격한 친구에게 "다른지" 물어보기
let result4 = 값1 !== 값2;

우리가 추천하는 방법:

// ✅ 이렇게 하는 게 좋아요: 항상 엄격한 비교 사용
if (userName === "admin") {
    console.log("관리자예요!");
}

// ❌ 이렇게 하면 위험할 수 있어요
if (userName == "admin") {
    // 예상하지 못한 일이 일어날 수 있어요
}

🧪 직접 해보면서 배우기

이제 실제로 두 친구가 어떻게 다르게 행동하는지 함께 살펴보겠습니다!

🔹 첫 번째 실험: 기본적인 차이점 확인하기

숫자와 글자를 비교할 때 두 친구가 어떻게 다르게 반응하는지 살펴보겠습니다.

// 우리가 가진 정보들
let age = 18;                    // 숫자 18
let userInput = "18";           // 글자 "18"

console.log("숫자 18과 글자 '18'을 비교해볼게요");
console.log("age:", age, "(종류:", typeof age + ")");
console.log("userInput:", userInput, "(종류:", typeof userInput + ")");

// == 친구에게 물어보기 (관대한 비교)
let looseResult = age == userInput; // 관대한 친구가 대답해요
console.log("18 == '18' 결과:", looseResult);    // true가 나와요!

// === 친구에게 물어보기 (엄격한 비교)
let strictResult = age === userInput; // 엄격한 친구가 대답해요
console.log("18 === '18' 결과:", strictResult);  // false가 나와요!

// 참/거짓과 숫자 비교해보기
let isActive = true;            // 참/거짓의 참
let activeCount = 1;            // 숫자 1

console.log("\n참과 숫자 1을 비교해볼게요");
console.log("isActive:", isActive, "(종류:", typeof isActive + ")");
console.log("activeCount:", activeCount, "(종류:", typeof activeCount + ")");

// == 친구는 true를 1로 바꿔서 비교해요
let boolLoose = isActive == activeCount;
console.log("true == 1 결과:", boolLoose);          // true가 나와요!

// === 친구는 종류가 다르니까 다르다고 해요
let boolStrict = isActive === activeCount;
console.log("true === 1 결과:", boolStrict);        // false가 나와요!

이 실험에서 우리는 == 친구가 어떻게 자동으로 종류를 바꿔주는지 확인할 수 있어요. 글자 "18"을 숫자 18로 바꾸고, true를 숫자 1로 바꿔서 비교하거든요. 하지만 === 친구는 이런 변환을 전혀 하지 않고 정확히 같은 값과 종류인지만 확인해요.

🔹 두 번째 실험: 실제 상황에서 일어날 수 있는 문제

우리가 실제로 프로그램을 만들 때 생길 수 있는 상황을 살펴보겠습니다.

// 사용자 로그인 시스템을 만들어볼게요
let correctPassword = "admin123";    // 올바른 비밀번호
let userPassword = "admin123";       // 사용자가 입력한 비밀번호
let userConfirm = "true";           // 사용자 확인 (글자로 받았어요)
let systemConfirm = true;           // 시스템에서 기대하는 확인 (참/거짓)

console.log("사용자 로그인 확인 시스템");
console.log("입력된 비밀번호:", userPassword);
console.log("확인 입력:", userConfirm, "(종류:", typeof userConfirm + ")");
console.log("시스템 기대값:", systemConfirm, "(종류:", typeof systemConfirm + ")");

// 비밀번호 확인 (이건 잘 작동해요)
if (userPassword === correctPassword) {
    console.log("✅ 비밀번호가 맞아요!");
} else {
    console.log("❌ 비밀번호가 틀려요!");
}

// 사용자 확인에서 문제가 생길 수 있어요
console.log("\n사용자 확인 검사:");

// == 사용했을 때 (위험할 수 있어요)
if (userConfirm == systemConfirm) {
    console.log("== 비교: 사용자가 확인했어요");   // 이게 실행될까요?
} else {
    console.log("== 비교: 사용자가 확인 안 했어요");
}

// === 사용했을 때 (안전해요)
if (userConfirm === systemConfirm) {
    console.log("=== 비교: 사용자가 확인했어요");
} else {
    console.log("=== 비교: 사용자가 확인 안 했어요");  // 이게 실행돼요
}

// 올바른 처리 방법 (현재 배운 내용으로)
if (userConfirm === "true" && systemConfirm === true) {
    console.log("✅ 안전한 방법: 사용자가 확인했어요!");
}

이 실험에서 중요한 점은 사용자가 입력한 정보가 항상 우리가 예상한 종류로 들어오지 않는다는 거예요. 웹사이트에서 받은 정보는 대부분 글자 형태이기 때문에, 이걸 제대로 처리하지 않으면 예상하지 못한 결과가 생길 수 있어요.

🔹 세 번째 실험: 깜짝 놀랄 자동 변환들

자바스크립트의 == 친구가 만들어내는 정말 신기한 상황들을 살펴보겠습니다.

// 예상하기 어려운 비교 결과들을 살펴보아요
console.log("깜짝 놀랄 == 비교 결과들:");

// 빈 배열과 거짓 비교하기
let emptyArray = [];        // 빈 배열
let falseBool = false;      // 거짓
console.log("빈 배열:", emptyArray);
console.log("false:", falseBool);
console.log("[] == false:", emptyArray == falseBool);        // true가 나와요!! 깜짝!
console.log("[] === false:", emptyArray === falseBool);      // false가 나와요

// 글자 "0"과 거짓 비교하기
let stringZero = "0";       // 글자 "0"
let falseBool2 = false;     // 거짓
console.log("\n글자 '0'과 false 비교하기:");
console.log("'0' == false:", stringZero == falseBool2);      // true가 나와요!! 신기하죠?
console.log("'0' === false:", stringZero === falseBool2);    // false가 나와요

// null과 undefined의 특별한 관계
let nullValue = null;          // 비어있음
let undefinedValue = undefined; // 정해지지 않음
console.log("\nnull과 undefined 비교하기:");
console.log("null == undefined:", nullValue == undefinedValue);    // true (특별한 규칙이에요)
console.log("null === undefined:", nullValue === undefinedValue);  // false

// 빈 글자와 숫자 0
let emptyString = "";       // 빈 글자
let numberZero = 0;         // 숫자 0
console.log("\n빈 글자와 숫자 0 비교하기:");
console.log("'' == 0:", emptyString == numberZero);          // true가 나와요
console.log("'' === 0:", emptyString === numberZero);        // false가 나와요

// 숫자 배열과 글자 비교하기
let numberArray = [1, 2, 3];   // 숫자 배열
let numberString = "1,2,3";    // 글자
console.log("\n숫자 배열과 글자 비교하기:");
console.log("숫자 배열:", numberArray);
console.log("글자:", numberString);
console.log("[1,2,3] == '1,2,3':", numberArray == numberString);   // true가 나와요
console.log("[1,2,3] === '1,2,3':", numberArray === numberString); // false가 나와요

console.log("\n결론:");
console.log("== 친구는 때로는 깜짝 놀랄 결과를 만들어요.");
console.log("=== 친구는 항상 예상할 수 있는 결과를 줘요.");
console.log("안전한 코딩을 위해서는 === 사용을 추천해요!");

이 실험들을 통해 우리는 == 친구가 얼마나 예상하기 어려운 결과를 만들어낼 수 있는지 확인할 수 있어요. 빈 배열 []false와 같다고 판단되거나, 글자 "0"false와 같다고 여겨지는 건 정말 직관적이지 않죠?

🔄 안전한 비교하기 과정 정리

지금까지 배운 내용을 바탕으로 안전하고 예상할 수 있는 비교를 하는 방법을 정리해보겠습니다.

첫 번째 단계비교 친구 선택하기입니다. 특별한 이유가 없다면 항상 ===!==를 사용하는 게 좋아요. 이렇게 하면 예상할 수 있는 결과를 얻을 수 있고 문제를 해결하기도 더 쉬워져요.

두 번째 단계종류 확인하기입니다. 비교하려는 두 값이 같은 종류인지 미리 확인해보세요. typeof라는 확인 방법을 사용하면 쉽게 확인할 수 있어요.

세 번째 단계직접 변환하기입니다. 만약 서로 다른 종류의 값을 비교해야 한다면, 나중에 배울 변환 방법을 사용해서 직접 변환한 후 비교하세요. 이렇게 하면 우리가 원하는 게 뭔지 명확해져요.

마지막으로 가장 중요한 건 일관성 유지하기입니다. 프로젝트 전체에서 같은 방식의 비교를 사용하면 코드의 품질이 크게 좋아져요.

🧚‍♀️ 이야기로 다시 배우기: 학교의 시험 채점 시스템

우리가 배운 내용을 재미있는 이야기로 다시 정리해볼까요?

우리 동네 끝자락에 있는 학교에는 두 가지 다른 채점 시스템이 있었습니다. 하나는 "관대한 채점기"이고, 다른 하나는 "정확한 채점기"였어요.

관대한 채점기(==)는 학생들에게 인기가 많았습니다. 수학 문제의 답이 숫자 5인데 학생이 글자 "5"를 써도 "5를 말하는 거니까 정답!"이라고 했거든요. 문제의 답이 true인데 1을 써도 "참을 의미하는 거니까 맞아!"라고 인정해줬어요. 심지어 빈 종이([])를 내도 "아무것도 없다는 건 거짓(false)과 같으니까 맞아!"라고 하기도 했답니다.

하지만 정확한 채점기(===)는 달랐어요. "숫자 5와 글자 '5'는 완전히 다른 거예요!", "참과 숫자 1은 종류가 달라요!"라며 정확히 일치하는 답만 인정했죠.

처음에는 학생들이 관대한 채점기를 더 좋아했어요. 점수를 받기가 더 쉬웠거든요. 하지만 시간이 지나면서 문제가 생겼어요. 관대한 채점기 때문에 자신의 실력을 제대로 파악하지 못한 학생들이 더 어려운 시험에서 실패하기 시작했거든요.

반면에 정확한 채점기로 공부한 학생들은 처음에는 힘들었지만, 나중에는 어떤 어려운 문제도 정확하게 해결할 수 있게 되었어요.

결국 학교에서는 정확한 채점기만 사용하기로 결정했고, 그 이후로 학생들의 실력이 훨씬 향상되었다고 해요. 우리도 마찬가지로 ===를 사용해서 정확하고 안전한 코드를 작성해야겠죠!

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

친구들이 =====를 사용할 때 자주 하는 실수들을 살펴보고, 어떻게 피할 수 있는지 알아보겠습니다.

❌ 실수 1: 사용자가 입력한 정보를 처리할 때 종류를 생각하지 않기

let userAge = "25";              // 사용자가 입력한 나이 (글자)
let minimumAge = 18;             // 최소 나이 (숫자)

// ❌ 위험한 비교
if (userAge >= minimumAge) {     // "25" >= 18, 글자와 숫자 비교
    console.log("어른이에요");    // 이게 실행될까요?
}

// ✅ 안전한 비교 (현재 배운 내용으로)
// 나중에 배울 변환 방법을 사용하지 말고, 지금은 이런 식으로 처리
if (userAge === "25" && 25 >= minimumAge) {  // 직접 확인
    console.log("어른이에요");         // 확실히 실행돼요
}

이런 실수가 생기는 이유는 웹사이트에서 받은 모든 입력이 기본적으로 글자라는 점을 놓치기 때문입니다.

❌ 실수 2: 참/거짓 값을 다른 종류와 직접 비교하기

let hasPermission = "true";      // 글자로 받은 권한 정보
let isAuthorized = true;         // 시스템의 참/거짓 값

// ❌ 예상치 못한 결과
if (hasPermission == isAuthorized) {    // "true" == true
    console.log("권한이 있어요");        // 실행돼요 (우연히)
}

// ✅ 명확한 비교
if (hasPermission === "true" && isAuthorized === true) {
    console.log("권한이 있어요");        // 의도가 명확해요
}

참/거짓 값을 다른 종류와 비교할 때는 항상 각각을 따로 확인하는 게 안전해요.

❌ 실수 3: 배열이나 객체를 단순한 값과 비교하기

let emptyItems = [];             // 빈 배열
let hasItems = false;            // 아이템이 있는지 여부

// ❌ 혼란스러운 결과
if (emptyItems == hasItems) {    // [] == false → true
    console.log("아이템이 없어요");  // 실행됨 (의도하지 않았을 수 있어요)
}

// ✅ 명확한 확인
if (emptyItems.length === 0) {   // 배열의 길이로 확인
    console.log("아이템이 없어요");  // 의도가 명확해요
}

배열이나 객체는 == 친구와 함께 사용할 때 예상치 못한 변환이 일어날 수 있으므로, 적절한 방법이나 속성을 사용해서 확인하는 게 좋아요.

💭 연습 문제를 시작하기 전에

이제 우리는 작은 연습 문제들을 통해 오늘 배운 내용을 직접 경험해보려 합니다. 연습 문제란, 마치 정원에서 새로 배운 원예 기법을 직접 꽃에 적용해보는 것과 같습니다. 처음에는 조심스럽고 어색할 수 있지만, 한 번 한 번 정성껏 해보다 보면 어느새 자연스러운 솜씨가 됩니다.

우리가 지금까지 함께 걸어온 길을 생각해보세요. =====의 차이점을 이해하고, 각각이 어떤 상황에서 어떻게 동작하는지 알아보았습니다. 이제 그 지식을 손끝으로 직접 확인해볼 시간입니다.

✏️ 직접 해보기 - 쉬운 연습 문제들

이제 배운 내용을 연습 문제를 통해서 차근차근 익혀보겠습니다!

Ex1) 숫자와 글자를 비교해서 "같은지 다른지"를 알아내보자

// 숫자 10을 담을 상자를 만들어요
let number = 10;

// 글자 "10"을 담을 상자를 만들어요  
let text = "10";

// 두 값을 비교해서 결과를 확인해보아요
console.log("number == text:", number == text);    // 관대한 비교 결과
console.log("number === text:", number === text);  // 엄격한 비교 결과

// 각각의 종류도 확인해보아요
console.log("number의 종류:", typeof number);      // 숫자 종류 확인
console.log("text의 종류:", typeof text);          // 글자 종류 확인

Ex2) 참/거짓과 숫자 1을 비교해서 어떤 친구가 뭐라고 하는지 들어보자

// 참/거짓의 참을 담을 상자를 만들어요
let isTrue = true;

// 숫자 1을 담을 상자를 만들어요
let one = 1;

// 관대한 친구에게 물어보기
if (isTrue == one) {
    console.log("관대한 친구: 참과 1은 같아요!");
} else {
    console.log("관대한 친구: 참과 1은 달라요!");
}

// 엄격한 친구에게 물어보기
if (isTrue === one) {
    console.log("엄격한 친구: 참과 1은 같아요!");
} else {
    console.log("엄격한 친구: 참과 1은 달라요!");
}

Ex3) 사용자가 입력한 나이가 18세 이상인지 안전하게 확인해보자

// 사용자가 입력한 나이 (웹사이트에서는 항상 글자로 받아와요)
let userAge = "20";

// 성인이 되는 나이 (숫자)
let adultAge = 18;

// 현재 배운 내용으로 안전하게 확인하는 방법
console.log("사용자가 입력한 나이:", userAge);
console.log("성인 기준 나이:", adultAge);

// 먼저 사용자 나이가 어떤 종류인지 확인
console.log("userAge의 종류:", typeof userAge);
console.log("adultAge의 종류:", typeof adultAge);

// === 를 사용해서 정확한 비교 (현재 배운 내용으로)
if (userAge === "20" && 20 >= adultAge) {
    console.log("안전한 방법: 성인이에요");
} else if (userAge === "19" && 19 >= adultAge) {
    console.log("안전한 방법: 성인이에요");
} else if (userAge === "18" && 18 >= adultAge) {
    console.log("안전한 방법: 성인이에요");
} else {
    console.log("더 확인이 필요해요");
}

console.log("나중에 배울 변환 방법을 사용하면 더 쉬워져요!");

🤔 조금 더 어려운 문제로 실력 확인하기

기본 연습을 마쳤다면, 이제 조금 더 깊이 있는 문제들을 통해서 이해도를 확인해보겠습니다.

Q1. 다음 중 true를 반환하는 비교는 어떤 것일까요?

A) "0" === false
B) 0 == false
C) null === undefined
D) [] === []

정답: B) 0 == false

설명: == 친구는 거짓 false를 숫자 0으로 바꿔서 비교하므로 0 == 0이 되어 true를 반환해요. 다른 선택지들은 모두 false를 반환합니다.

Q2. 안전한 사용자 입력 처리를 위한 올바른 방법은?

사용자가 입력한 글자 "18"과 시스템의 성인 나이 18을 비교할 때, 현재 배운 내용으로 가장 안전한 방법은 어떤 것일까요?

A) userInput == adultAge
B) userInput === adultAge
C) userInput === "18" && 18 >= adultAge
D) userInput !== "17"

정답: C) userInput === "18" && 18 >= adultAge

설명: 현재 배운 내용으로는 직접 값을 확인하고 ===로 비교하는 게 가장 안전해요. 의도가 명확하고 예상할 수 있는 결과를 얻을 수 있거든요.

Q3. null == undefinednull === undefined의 결과가 다른 이유는?

정답:

  • null == undefinedtrue입니다. 자바스크립트의 특별한 규칙에 의해 이 둘은 관대한 비교에서 같다고 여겨져요.
  • null === undefinedfalse입니다. nullundefined는 서로 다른 종류이므로 엄격한 비교에서는 다르다고 판단됩니다.

🔄 1단원 복습 문제 - 잊지 않도록 다시 한번!

지금까지 2단원을 열심히 공부했으니, 1단원에서 배운 중요한 내용들을 복습해볼까요?

복습 문제 1: 변수 만들기와 이름 짓기

// 1단원에서 배운 변수 만들기를 다시 연습해보아요!

// ✅ 올바른 변수 이름 예시들
let userName = "김철수";        // camelCase로 이름 지었어요
let userAge = 15;             // 숫자를 저장했어요
const PI = 3.14159;           // 바뀌지 않는 값은 const로 만들었어요

// ❌ 잘못된 변수 이름 예시들 (이렇게 하면 안 돼요)
// let user-name = "김철수";   // 하이픈(-)은 사용할 수 없어요
// let 1userName = "김철수";   // 숫자로 시작할 수 없어요
// let class = "3학년";       // 예약어는 사용할 수 없어요

console.log("사용자 이름:", userName);
console.log("사용자 나이:", userAge);
console.log("원주율:", PI);

복습 문제 2: 데이터 타입 확인하기

// 1단원에서 배운 데이터 타입들을 다시 확인해보아요!

let myNumber = 42;                  // 숫자 타입
let myString = "안녕하세요";          // 문자열 타입
let myBoolean = true;               // 불린(참/거짓) 타입
let myUndefined = undefined;        // undefined 타입
let myNull = null;                  // null 타입

console.log("=== 1단원 복습: 데이터 타입 확인하기 ===");
console.log("myNumber의 타입:", typeof myNumber);       // "number"
console.log("myString의 타입:", typeof myString);       // "string"
console.log("myBoolean의 타입:", typeof myBoolean);     // "boolean"
console.log("myUndefined의 타입:", typeof myUndefined); // "undefined"
console.log("myNull의 타입:", typeof myNull);           // "object" (특별한 경우예요)

// 2단원에서 배운 === 를 사용해서 정확히 비교해보아요
console.log("\n=== 엄격한 비교로 확인해보기 ===");
console.log("myNumber === 42:", myNumber === 42);
console.log("myString === '안녕하세요':", myString === "안녕하세요");
console.log("myBoolean === true:", myBoolean === true);

복습 해답과 설명:

  1. 변수 이름 규칙 (1단원): camelCase를 사용하고, 숫자로 시작하거나 특수문자를 사용하면 안 됩니다.
  2. 데이터 타입 (1단원): typeof로 확인할 수 있고, ===로 정확한 값 비교를 할 수 있어요.
  3. 연결점: 1단원에서 배운 데이터 타입을 알아야 2단원의 === 비교를 제대로 이해할 수 있어요!

지금까지 자바스크립트의 쌍둥이 비교 친구 =====에 대해 차근차근 알아보았습니다. 이 둘의 차이를 이해하고 올바르게 사용하는 것은 안전하고 예상할 수 있는 코드를 작성하는 데 정말 중요한 기초가 됩니다. 앞으로는 항상 ===를 사용하는 습관을 만들어서 더 훌륭한 코딩 친구가 되어보아요!

✅ 학습 완료 체크리스트

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

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

📂 마무리 정보

오늘 배운 2.2.3 내용이 여러분의 자바스크립트 지식 상자에 잘 저장되었나요? 다음 시간에는 더 재미있는 내용으로 만나요!

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


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