Mutable은 변경 가능한 변수의 유형이다.
자바스크립트에서는 원시 값이 아닌 객체와 배열만이 Mutable이다.
가변 객체는 객체가 생성된 후 상태를 수정할 수 있는 객체이다.
불변 객체는 일단 객체가 생성되면 상태를 변경할 수 없는 객체이다.
문자열과 숫자는 불변이다.
var immutableString = "Hello";
// 위의 코드에서는 문자열 값을 가진 새 개체가 생성됩니다.
immutableString = immutableString + "World";
// 우리는 지금 기존 값에 "World" 를 추가하고 있습니다.
위와 같은 예제가 있고, 이때 발생하는 이벤트는 다음과 같다.
immutableString
이 검색된다."World"
가 immutableString
의 기존 값에 추가된다.immutableString
객체는 새로 만든 메모리 공간을 가리킨다.Garbage collection이란?
가비지 콜렉션(Garbage collection) 알고리즘의 핵심개념은 참조 이다.
더 이상 필요없는 오브젝트를 어떤 다른 오브젝트로 참조하지 않는 오브젝트라고 정의한다.
이를 가비지라 부르며, 이를 참조하는 다른 오브젝트가 하나도 없는 경우, 수집이 가능해진다.
출처 및 자세한 내용 : MDN - 자바스크립트의 메모리 관리
Immutable은 mutable의 반대되는 개념으로 변경할 수 없는 객체이다.
객체는 다양한 이유로 불변일 수 있는데, 아래 예시와 같다.