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
'FE' 카테고리의 다른 글
Lodash Method 로대쉬 패키지와 메소드 / uniqBy unionBy find (0) | 2021.11.13 |
---|---|
lodash cloneDeep / 얕은 복사와 깊은 복사 (shallow, deep copy) (0) | 2021.11.13 |
전개연산자 Spread, 아이템을 전개하는 방법 (0) | 2021.11.13 |
객체 데이터, 배열 데이터의 구조 분해 할당 (0) | 2021.11.12 |
JS 데이터 API / Object 객체데이터 메소드 (0) | 2021.11.12 |