Study/JavaScript

08. 불변성

김만재 2022. 3. 24. 20:24
  • 데이터 불변성(Immutability)
    • 원시 데이터: String, Number, Boolean, undefined, null
    • 참조형 데이터: Object, Array, Function
// 원시형 데이터

let a = 1
let b = 4
console.log(a, b, a === b)  // expected output: 1 4 false

b = a	// b가 a와 같은 저장소를 바라보게 됨
console.log(a, b, a === b)  // e.o: 1 1 true

a = 7
console.log(a, b, a === b)	// e.o: 7 1 false

let c = 1
console.log(b, c, b == c)	// e.o: 1 1 true -> 데이터 불변성!
// 원시형 데이터는 생김새가 같으면 같은 거!
// 참조형 데이터
// 참조형 데이터는 새로운 값을 만들 때마다 새로운 메모리 주소에 할당됨.
// 따라서, 참조형 데이터는 불변성이 없음. (가변성)

let a = { k: 1 }
let b = { k: 1 }
console.log(a, b, a === b)	// expected output: {k: 1} {k: 1} false

a.k = 7
b = a
console.log(a, b, a === b)	// e.o: {K: 7} {k: 7} true

a.k = 2
console.log(a, b, a === b)	// e.o: {k: 2} {k: 2} true

let c = b
console.log(a, b, c, a === c)	// e.o: {k: 2} {k: 2} {k: 2} true

a.k = 9
console.log(a, b, c, a === c)	// e.o: {k: 9} {k: 9} {k: 9} true