불변성(Immutability) : 생성된 데이터가 메모리에서 변경되지 않는다.
가변성(Mutability) : 생성된 데이터가 메모리에서 변경될 수 있다.
원시형(number, string, boolean, undefined, null, symbol)은 불변성을,
참조형(배열, 객체, 함수)은 가변성을 가지고 있다.
이와 같은 결과가 나오게 된 과정을 살펴보자.
8줄 - 객체 데이터가 M1에 저장되고, 그 중 숫자는 M2에 저장된다.
9줄 - b는 a가 참조하고 있는 주소 M1과 같은 주소를 참조한다.
11줄 - M3에 새로운 값이 할당되고 M1이 바라보고 있던 값도 M3로 변경된다.
13줄, 14줄 - a와 b 모두 같은 주소를 참조하고 있기 때문에 같은 값이 출력된다.
16줄 - M4에 새로운 값이 할당되고 M1이 바라보고 있던 값도 M4로 변경된다.
18줄, 19줄 - a와 b 모두 같은 주소를 참조하고 있기 때문에 같은 값이 출력된다.
배열 역시 같은 원리이다.
그렇다면 기존 데이터를 건드리지 않고, 분리된 개념으로 사용하려면 어떻게 해야할까? -> 얕은 복사와 깊은 복사
'카카오테크캠퍼스 > 선택과정' 카테고리의 다른 글
[카카오테크캠퍼스 선택과정] JavaScript 마스터: 가비지 컬렉션 (0) | 2023.05.25 |
---|---|
[카카오테크캠퍼스 선택과정] JavaScript 마스터: 얕은 복사와 깊은 복사 (0) | 2023.05.25 |
[카카오테크캠퍼스 선택과정] JavaScript 마스터: Symbol, BigInt (0) | 2023.05.25 |
[카카오테크캠퍼스 선택과정] JavaScript 마스터: Web APIs (0) | 2023.05.24 |
[카카오테크캠퍼스 선택과정] 애플 예제: 반응형 웹사이트 (0) | 2023.05.19 |