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