Immutable & Mutable

김루루룽·2022년 5월 8일
0

React, Next.js

목록 보기
37/42

immutable과 mutable은 무엇이 다른것인가요?

Mutable한 객체는 생성된 이후에 상태가 변경될 수 있는 객체이고, Immutable한 객체는 생성된 이후에 상태가 변경되지 않는 객체를 말한다. 자바스크립트에서 Object와 Array를 제외한 모든 타입은 Immutable한 타입이다.

let immutableString = 'Hello';

// In the above code, a new object with string value is created.

immutableString = immutableString + 'World';

// We are now appending "World" to the existing value.

immutableString에 string 값을 더하면, 아래와 같은 이벤트들이 발생한다.

  • immutableString에 존재하던 값을 읽음
  • 'World'가 immutableString에 존재하던 값에 덧붙여짐
  • 결과값이 새로운 메모리 블록에 할당됨
  • immutableString 객체가 새로운 메모리 공간을 가리킴
  • 이전에 immutableString이 가리키던 메모리 공간은 GC의 대상이 됨
  • 따라서 Immutable한 타입은, 이전의 상태를 전혀 변화하지 않고 새로운 상태로 만들기 때문에 변경되지 않는다고 말하는 것이다.

Immutable

Immutable 객체는 내용이 변하지 않는 객체를 말한다. 객체는 다양한 이유로 불변적일 수 있는데, 예시로 아래와 같은 경우가 있다.

  • 성능을 향상시키기 위함
    객체가 미래에 변할 계획이 없을 때
  • 메모리 사용을 줄이기 위함
    전체 객체를 복사하지 않고 객체 참조를 만듦
  • Thread-safety (쓰레드끼리 자원 공유할 때 안전하다는 뜻 같음)
    여러개의 쓰레드가 서로 간섭하지 않고 같은 객체를 참조할 수 있음

Mutable

Mutable은 바뀔 수 있는 변수 타입을 말한다. Javascript에서는 object와 array만 Mutable한 타입이고, 원시 타입은 Immutable하다.

출처 : 2ssue.github.io

profile
1day 1push..plz

0개의 댓글