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이 가능