JavaScript에서 사용하는 기본 데이터
String, Number, Boolean, undefined, null
let a = 1 let b = 4 console.log(a, b, a === b) // 값: 1 4 false b = a // 변수 b에 a가 바라보는 메모리의 주소를 할당 console.log(a, b, a === b) // 값: 1 1 true a = 7 // a에 다른 데이터가 들어가므로 다른 메모리 주소가 할당됨 console.log(a, b, a === b) // 값: 7 1 false let c = 1 console.log(b, c, b === c) // 값: 1 1 true // c는 새로운 변수지만 원래 있던 데이터 값인 1이 할당되었으므로 // b와 c가 가리키는 메모리 주소가 같아서 true가 반환됨
Object, Array, Function
let a = { k: 1 } let b = { k: 1 } console.log(a, b, a === b) // 값: { k: 1 }, { k: 1 }, false // 변수 a와 b가 바라보는 메모리 주소가 다르므로 false a.k = 7 b = a // 변수 a와 b가 바라보는 메모리 주소가 같음 console.log(a, b, a === b) // 값: { k: 7 }, { k: 7 }, true a.k = 2 // a 객체 데이터의 속성 값만 바꿈 console.log(a, b, a === b) // 값: { k: 2 }, { k: 2 }, true // 그러나 a와 b가 바라보는 메모리 주소가 같으므로 b의 객체 데이터의 속성 값도 함께 바뀜 let c = b console.log(a, b, c, a === c) // 값: { k: 2 }, { k: 2 }, { k: 2 }, true a.k = 9 console.log(a, b, c, a === c) // 값: { k: 9 }, { k: 9 }, { k: 9 }, true // 이또한 a의 k 속성 값만 바꿨지만 메모리 주소가 같아 b, c 속성 값 모두 바뀜