Immutable & Mutable

Jeong-Taek·2022년 10월 23일
0

Immutable

Immutable 이란 불변객체,
불변객체는 내용변경이 불가능한 객체이다.
객체는 다양한 이유로 불변일 수 있는데 예시를 보도록 하자

  1. 성능 향상(향후 객체 변경에 대한 계획 x)
  2. 메모리 사용 줄이기(전체 객체를 복제하는 대신 객체를 참조)
  3. 스레드 안전성(여러 스레드가 서로 간섭하지 않고 동일한 객체 참조가 가능)

Mutable

Mutable 이란 변경이 가능한 변수의 유형,
javascript에서 원시값이 아닌 객체와 배열만이 mutable에 속한다.

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

아래 코드를 보자

let immutableString = "Hello";

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

immutableString = immutableString + "World";

// 기존 값에 "World" 를 추가하고 있음

문자열을 이용해서 "immutableString"을 추가하면 다음과 같은 이벤트가 발생하게 된다.

  • 기존 값 "immutableString"이 검색됨.
  • "World"가 "immutableString"의 기존값에 추가됨.
  • 결과 값이 새 메모리 블록에 할당됨.
  • "immutableString" 객체는 새로 만든 메모리 공간을 가리킴.
  • 기존에 생성된 메모리 공간은 Garbage collection이 가능해짐.

0개의 댓글