본문 바로가기
프론트엔드/JavaScript

JS 데이터 - 불변성

by step 1 2021. 6. 1.
반응형

원시 데이터는 기존에 메모리가 생성되었다면

나중에 같은 값의 메모리를 선언했다면 새로 메모리를 할당하지 않고 기존의 메모리를 이용한다.

즉. 생긴것이 같으면 같은 메모리를 사용

// 데이터 불변성(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