[Core JavaScript. 핵심 개념과 동작원리 이해하기]
참조형 데이터의 가변성이란..도대체 무엇을 말하는걸까...
참조형 데이터에서 프로퍼티 할당 과정을 보면서 이해해본다..
변수 복사 이후 값 변경 결과를 비교해보자.
var a = 10;
var b = a;
var obj1 = {c: 10, d: 'ddd'};
var obj2 = obj1;
b = 15;
obj2.c = 20;
➡️ 여기서 a != b 이지만, obj1 === obj2 이다.
var a = 10;
var b = a;
var obj1 = {c: 10, d: 'ddd'};
var obj2 = obj1;
b = 15;
obj2.c = {c: 20, d: 'ddd'};
➡️ 여기서는 a != b, obj1 !== obj2 이다.
참조형 데이터의 '가변'은
데이터 자체가 아닌 내부 프로퍼티를 변경할 때 성립한다.
➡️ 데이터 자체를 변경하고자 하면 (=새로운 데이터를 할당하고자 하면)
기본형 데이터와 마찬가지로 기존 데이터는 변하지 않는다. (불변)
내부 프로퍼티를 변경할 필요가 있을 때마다 새로운 객체를 만들어 재할당 하면
불변성을 확보할 수 있다.
어떤 상황에 불변객체가 필요한걸까...
값으로 전달받은 객체에 변경을 가하더라도 원본 객체는 변하지 않아야하는 경우.. 그것은 언제일까...다음 이 시간에 . . .