반응형
원시 데이터는 기존에 메모리가 생성되었다면
나중에 같은 값의 메모리를 선언했다면 새로 메모리를 할당하지 않고 기존의 메모리를 이용한다.
즉. 생긴것이 같으면 같은 메모리를 사용
// 데이터 불변성(Immutablility)
// 원시 데이터: String, Number, Boolean, undefined, null
// 참조형 데이터: Object, Array, Function
let a = 1;
let b = 4
console.log(a, b, a === b)
b = a
// 같은 메모리 주소를 바라보기 때문에 true
console.log(a, b, a === b)
a = 7
console.log(a, b, a === b)
let c = 1
// 기존의 1이라는 메모리를 바라보기 때문에 true
console.log(b, c, b === c)
참조 데이터는 불변성이 없다. 즉, 선언을 하면 메모리가 항상 새로 생성 된다.
같은 메모리 주소를 바라보게 되면 원래 메모리 주소의 데이터가 변하면 참조하고 있는 데이터들도 모두 변한다.
생김새가 같더라고 false가 나올 수 있다.
let a = { k: 1}
let b = { k: 1}
console.log(a, b, a === b)
a.k = 7
b = a
// b 는 a의 메모리 주소를 바라보게 되기 때문에 true
console.log(a, b, a === b)
a.k = 2
// a의 데이터를 수정해도 b는 a의 메모리를 바라보기 때문에 true (값이 자동으로 b 또한 변한다.)
console.log(a, b, a === b)
let c = b
console.log(a, b, c, a === c)
참조형 데이터는 = 기호를 사용하지 않고 복사라는 기능을 사용하는 것을 권장한다.
반응형
'프론트엔드 > JavaScript' 카테고리의 다른 글
JS 데이터 - 가져오기, 내보내기 (0) | 2021.06.03 |
---|---|
JS 데이터 - 복사 (0) | 2021.06.01 |
JS 데이터 - 전개 연산자 (Spread) (0) | 2021.05.31 |
JS 데이터 - 구조 분해 할당 (0) | 2021.05.31 |
JS 데이터 - 객체 (0) | 2021.05.31 |