let number = 10;
let number2 = number;
number2 = 10000;
console.log(number) // 10
console.log(number2) // 10000
let arr = [1, 2, 3];
let arr2 = arr;
console.log(arr === arr2) // true
arr.push(4);
console.log(arr) // [1, 2, 3, 4]
console.log(arr2) // [1, 2, 3, 4]
: 원시 타입은 '값'을 비교하고, 참조 타입은 '주소'를 비교한다.
let a = 1;
let b = 1;
console.log(a === b) // true
const obj1 = {a: 1, b: 2};
const obj2 = {a: 1, b: 2};
console.log(obj1 === obj2) // false
: 얕은 비교와 달리 깊은 비교는 참조 타입(객체의 경우)에도 '값'을 비교
let obj = {a: 1, b: 2};
let obj2 = {a: 1, b: 2};
console.og(obj === obj2) // false
console.log(JSON.stringify(obj) === JSON.stringify(obj2)) // true
출처