let a = 1 let b = 4 console.log(a, b, a === b) // 1 4 false b = a console.log(a, b, a === b) // 1 1 true a = 7 console.log(a, b, a === b) // 7 1 false let c = 1 console.log(b, c, b === c) // 1 1 true
참조형 데이터 : Object, Array, Function
불변성이 없다. 즉, 가변한다
모양이 같다고 같은 데이터는 아니다
한 쪽을 수정하면 의도치 않게 다른쪽도 수정이 될 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
let a = { k: 1 } let b = { k: 1 } console.log(a, b, a === b) // {k:1} {k:1} false a.k = 7 b = a console.log(a, b, a === b) // {k:7} {k:7} true a.k = 2 console.log(a, b, a === b) // {k:2} {k:2} true 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
참조형 데이터를 새롭게 할당해서 완전히 구분지어 사용하고 싶으면 복사라는 개념을 사용해 메모리상에서 분리해줘야 한다.
복사에는 얕은복사와 깊은복사가 있다
1 2 3 4 5 6 7 8 9 10 11 12
const user = { name: 'abc', age: 85, emails: ['abc@gmail.com'], } const copyUser = user console.log(copyUser === user) // true user.age = 22 console.log(user.age) // 22 console.log(copyUser.age) // 22 // 데이터가 둘 다 변했다