FE
데이터 불변성과 가변성, 원시데이터와 참조형 데이터
SIOT IEUNG
2021. 11. 13. 14:22
728x90
🌲 데이터 불변성 Immutability
ㄴ 원시 데이터 Primitive Type : String, Number, Boolean, Null, Undefined
ㄴ 참조형 데이터 Reference Type : Object, Array, Function(콜백)
🚨 원시 데이터
원시데이터가 기존 메모리 주소에 있다면, 새로운 메모리 주소에 할당되지 않는다.
기존의 메모리 데이터는 불변하며 같게 생겼으면 같다고 이해하는 편이 쉬움
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
🚨 참조형 데이터
같은 메모리 주소라면 값이 같아진다. 할당 연산자(=) 사용 시 복사가 아닌 메모리 주소만 참조하는 것
데이터를 새로 할당할 때마다 메모리 주소를 새로 생성한다. 값이 같아보여도 같지 않음
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(b, c, b === c) // { k: 2 }, { k: 2 }, true
728x90