[TIL] 참조형 데이터의 가변성

hsecode·2022년 11월 24일
1

코어자바스크립트

목록 보기
4/4
post-thumbnail

[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 이다.

즉,

참조형 데이터의 '가변'은
데이터 자체가 아닌 내부 프로퍼티를 변경할 때 성립한다.

➡️ 데이터 자체를 변경하고자 하면 (=새로운 데이터를 할당하고자 하면)
기본형 데이터와 마찬가지로 기존 데이터는 변하지 않는다. (불변)

그러니까...!

내부 프로퍼티를 변경할 필요가 있을 때마다 새로운 객체를 만들어 재할당 하면
불변성을 확보할 수 있다.

그렇다면...

어떤 상황에 불변객체가 필요한걸까...
값으로 전달받은 객체에 변경을 가하더라도 원본 객체는 변하지 않아야하는 경우.. 그것은 언제일까...다음 이 시간에 . . .

profile
Markup Developer 💫

0개의 댓글