완로그
article thumbnail

불변성(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 모두 같은 주소를 참조하고 있기 때문에 같은 값이 출력된다.

 

배열 역시 같은 원리이다.

 

그렇다면 기존 데이터를 건드리지 않고, 분리된 개념으로 사용하려면 어떻게 해야할까? -> 얕은 복사와 깊은 복사

profile

완로그

@완석이

프론트엔드 개발자를 꿈꾸는 완석이의 일기장입니다.