let a = 1
let b = 4
console.log(a, b, a === b)
b = a
console.log(a, b, a === b)
a = 7
console.log(a, b, a === b)
let c = 1
console.log(b, c, b === c)
- 새로운 원시 데이터를 사용했을 때 해당 원시 데이터가 기존 메모리 주소에 들어있다면 새로운 메모리 주소에 원시 데이터가 할당되는 것이 아니라 기존 메모리 주소를 바라보게된다.
- 원시 데이터는 불변성을 갖고 있기 때문에 새롭게 만들어지는 것이 아닌 항상 불변한다라는 개념이다.
let a = { k: 1 }
let b = { k: 1 }
console.log(a, b, a === b)
a.k = 7
b = a
console.log(a, b, a === b)
a.k = 2
console.log(a, b, a === b)
let c = b
console.log(a, b, c, a === c)
a.k = 9
console.log(a, b, c, a === c)
- 새로운 데이터를 만들때마다 같은 데이터가 기존 메모리 주소에 들어있더라도 새로운 메모리 주소에 할당됩니다.
b = a;
처럼 a
의 메모리 주소를 b
에 할당하면 a,b
는 같은 메모리의 주소를 바라보게되며 a
의 값이 변경되면 b
의 값도 같이 변경됩니다.
- 같은 메모리의 주소 값을 가지고 있는 변수들이 여러개 있을때 그 중 하나의 변수만 수정했더라도 의도치 않게 모든 변수들의 데이터 값이 변경될 수 있으므로 주의해야 합니다.