Immutable과 Mutable

HSKwon·2022년 7월 1일
0

Immutable

Immutable 객체는 내용이 변하지 않는 객체를 말한다. 객체는 다양한 이유로 불변적일 수 있는데,
예시로 아래와 같은 경우가 있다.

성능 향상을 위해 (객체의 변경에 대한 계획 없음)
메모리 사용을 줄이려고 (전체 개체를 복제하는 대신 개체 참조 만들기)
스레드의 안전성(여러 스레드가 서로 간섭하지 않고 동일한 객체를 참조할 수 있음)
Mutable

"Mutable"은 변경 가능(가변)한 변수의 유형이다.
JavaScript에서, 원시 값이 아닌 객체와 배열만이 mutable이다.

(변수 이름이 새 값을 가리키도록 "만들 수 있지만" 이전 값은 여전히 메모리에 유지 ->Garbage collection 필요 )

가변 객체는 객체가 생성된 후 상태를 수정할 수 있는 객체
불변 객체는 일단 객체가 생성되면 상태를 변경할 수 없는 객체

문자열과 숫자는 불변

var immutableString = "Hello";

// 위의 코드에서는 문자열 값을 가진 새 개체가 생성

immutableString = immutableString + "World";

// 우리는 지금 기존 값에 "World" 를 추가하고 있습니다.
문자열 값을 사용하여 "immutableString" 을 추가하면 다음 이벤트가 발생

:

1 기존 값 "immutableString"이 검색
2 "World"가 "immutableString"의 기존 값에 추가
3 결과 값이 새 메모리 블록에 할당
4 "immutableString" 객체는 새로 만든 메모리 공간을 가리킴
5 기존에 생성한 메모리 공간은 Garbage collection이 가능

profile
공부한 내용이나 관심 있는 정보를 글로 정리하며 익숙하게 만들고자 합니다.

0개의 댓글