변성(Mutable) vs 불변성(Immutable)
Title
변성(Mutable) vs 불변성(Immutable)
Category
GlossaryTags
Aliases
변성(Mutable) vs 불변성(Immutable)
불변성(Immutable)
Immutable
immutable
변성(Mutable)
Mutable
mutable
Related
Created
2 years ago
Updated
last year
불변성(Immutable)은 객체가 생성된 이후 그 상태를 변경할 수 없는 패턴을 의미한다.
- 의도하지 않은 객체의 변경을 방지할 수 있다.
- 의도하지 않은 변경의 원인 대다수는 "객체의 레퍼런스를 가지고 다른 곳에서 속성을 변경하기 때문이다." pass by reference vs pass by value
- 의도하지 않은 객체의 변경을 방지할 수 있다.
JavaScript에서 원시 값(Primitive)은 불변성이지만, JavaScript 객체(Object)는 변성이다.
jslet str = 'yellow'; str[0] = 'h'; console.log(str); // 'yellow' let arr = ['h', 'e', 'y']; arr[0] = 'k'; console.log(arr); // ['k', 'e', 'y']
let str = 'yellow'; str[0] = 'h'; console.log(str); // 'yellow' let arr = ['h', 'e', 'y']; arr[0] = 'k'; console.log(arr); // ['k', 'e', 'y']
Object.freeze 메서드를 사용하면, 객체에 속성 추가, 속성 삭제, 속성 변경, 속성 설명자(descriptor) 변경이 불가능하도록 객체를 동결한다.
- 동결된 객체의 속성 변경 시도는 에러가 발생하지 않는다. 엄격 모드(strict mode)에서는 오류가 발생한다.