Immutable한 객체는 생성된 이후에 상태가 변경되지 않는 객체를 말한다.
자바스크립트에서 Object와 Array를 제외한 모든 타입은 Immutable한 타입이다.
let immutableString = 'Hello';
immutableString = immutableString + 'World';
immutableString에 string 값을 더하면, 아래와 같은 이벤트들이 발생한다.
immutableString에 존재하던 값을 읽음
'World'
가 immutableString에 존재하던 값에 덧붙여짐
결과값이 새로운 메모리 블록에 할당됨
immutableString 객체가 새로운 메모리 공간을 가리킴
이전에 immutableString이 가리키던 메모리 공간은 GC의 대상이 됨
따라서 Immutable한 타입은, 이전의 상태를 전혀 변화하지 않고 새로운 상태로 만들기 때문에 변경되지 않는다고 말하는 것이다.
Mutable한 객체는 생성된 이후에 상태가 변경될 수 있는 객체이다
let mutableArray = ["철수", "훈이", "맹구"]
mutableArray.push("유리", "짱구")
mutableArray ['철수', '훈이', '맹구', '유리', '짱구']
원래의 배열이 변경된 것을 볼 수 있다