복습/프론트엔드
JavaScript - `===` 연산자란?
Blue_bull
2025. 2. 10. 20:12
📌 ===
연산자는 "값과 타입"을 비교하는 연산자!
✅ ===
연산자는 값과 타입이 모두 같아야 true
를 반환함.
✅ 메모리 주소(참조)는 비교하지 않음.
1️⃣ ===
vs ==
차이
연산자 | 비교 방식 | 예제 | 결과 |
---|---|---|---|
== |
값만 비교 (자동 형변환) | 1 == "1" |
✅ true (문자열 "1" 이 숫자 1 로 변환됨) |
=== |
값과 타입 모두 비교 | 1 === "1" |
❌ false (숫자와 문자열은 타입이 다름) |
✅ 결론: ===
는 값과 타입이 같아야 true
.
2️⃣ ===
연산자는 "주소값"을 비교할까?
🚀 객체(배열, 함수 포함)는 "주소(참조값)"를 비교함!
const obj1 = { name: "Alice" };
const obj2 = { name: "Alice" };
console.log(obj1 === obj2); // ❌ false (주소값이 다름)
obj1
과obj2
는 같은 내용을 가지고 있지만, 각각 다른 메모리 주소에 저장됨.- 따라서
===
비교 시 주소가 다르기 때문에false
가 반환됨.
✅ 객체 비교를 할 때는 JSON.stringify(obj1) === JSON.stringify(obj2)
를 사용하면 내용 비교 가능!
3️⃣ 배열도 객체이므로 주소값을 비교함
const arr1 = [1, 2, 3];
const arr2 = [1, 2, 3];
console.log(arr1 === arr2); // ❌ false (다른 주소를 가짐)
console.log(arr1 == arr2); // ❌ false (주소가 다름)
- 배열은 객체이므로,
===
는 값이 아니라 주소(참조값) 를 비교함.
✅ 해결 방법: 배열의 내용이 같은지 비교하려면 .toString()
또는 JSON.stringify()
사용
console.log(JSON.stringify(arr1) === JSON.stringify(arr2)); // ✅ true
🎯 최종 정리
비교 방식 | === |
== |
---|---|---|
기본 자료형 (숫자, 문자 등) | 값 & 타입 비교 | 값만 비교 (자동 형변환) |
객체 & 배열 | 메모리 주소(참조값) 비교 | 메모리 주소(참조값) 비교 |
✅ 값과 타입을 정확히 비교하려면 ===
를 사용!
✅ 객체나 배열을 비교할 때는 JSON.stringify()
를 사용해야 함!
📌 추가 질문 있으면 편하게 물어봐! 😊