
JavaScript에서 객체는 참조값(메모리 주소)을 비교한다. 따라서 객체의 속성이 모두 같더라도, 다른 메모리 주소에 저장되어 있으면 다른 객체로 판단한다.
const prev_obj = { count: 0 };
const new_obj = { count: 0 };
console.log(prev_obj === new_obj); // false
문제가 될 수 있는 상황



얕은 복사
const obj = { a: 1 };
const copyObj = obj;
copyObj.a = 2;
console.log(obj.a); // 2
console.log(obj === copyObj); // true
깊은 복사
const a = 1;
const b = a;
b = 2;
console.log(a); // 1
console.log(b); // 2
console.log(a === b); // false
| 원시 타입 (primitive type) | 객체 타입 (object/reference type) | |
|---|---|---|
| 값 | 변경 불가능한 값 (immutable value) | 변경 가능한 값 (mutable value) |
| 할당 시 | 변수에는 실제 값이 저장 | 변수에는 참조 값이 저장 |
| 다른 변수에 할당시 | 원시 값이 복사되어 전달 | 참조 값이 복사되어 전달 |