Immutable & Mutable

진성·2022년 5월 20일
0

자바스크립트

목록 보기
18/23

Mutable

Mutable은 변경 가능한 변수의 유형이다.
자바스크립트에서는 원시 값이 아닌 객체와 배열만이 Mutable이다.

가변 객체는 객체가 생성된 후 상태를 수정할 수 있는 객체이다.
불변 객체는 일단 객체가 생성되면 상태를 변경할 수 없는 객체이다.
문자열과 숫자는 불변이다.

var immutableString = "Hello";

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

immutableString = immutableString + "World";

// 우리는 지금 기존 값에 "World" 를 추가하고 있습니다.

위와 같은 예제가 있고, 이때 발생하는 이벤트는 다음과 같다.

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

Garbage collection이란?
가비지 콜렉션(Garbage collection) 알고리즘의 핵심개념은 참조 이다.
더 이상 필요없는 오브젝트를 어떤 다른 오브젝트로 참조하지 않는 오브젝트라고 정의한다.
이를 가비지라 부르며, 이를 참조하는 다른 오브젝트가 하나도 없는 경우, 수집이 가능해진다.
출처 및 자세한 내용 : MDN - 자바스크립트의 메모리 관리

Immutable

Immutable은 mutable의 반대되는 개념으로 변경할 수 없는 객체이다.
객체는 다양한 이유로 불변일 수 있는데, 아래 예시와 같다.

  • 성능 향상하기
  • 메모리 사용을 줄이기
  • 스레드 안전성

출처 : MDN - Mutable MDN - Immutable

profile
풀스택 진행중...

0개의 댓글