불변성(Immutability)이란?

규갓 God Gyu·2025년 3월 15일

면접질문

목록 보기
93/142

데이터가 최초 생성된 이후 그 상태를 변경할 수 없는 성질
불변성을 지키면 예측 가능하고 안정적인 코드를 작성할 수 있음

객체, 배열 같은 참조 타입은 기본적으로 가변적
ex-객체의 프로퍼티 값을 직접 변경 가능. 여기서 만약 불변성을 유지하고 싶다면 객체의 프로퍼티를 직접 변경하지 않고 새로운 객체를 생성하는 방식을 사용해야 함

const person = {name:'Alice", age:25};

//불변성 미유지
person.age = 26;

//불변성 유지
const updatedPerson = {...person, age:26};

불변성 유지 위해 스프레드 연산자, Object.assign(), Object.freeze()와 같은 내장 기능 활용하거나, Immutable js와 같은 도구 할용 가능

불변성 유지 시 성능 불리할 것 같은데, 왜 유지해야함?

업데이트마다 새로운 객체 생성해야 해서 메모리 비용 약간 증가하지만 무시할만한 수준이고, 장기적으로 유지보수성과 안정성을 크게 향상시키는 장점이 있음
또 데이터의 변경 흐름을 추적하기 쉽게 만들어줌
가변 데이터를 이곳 저곳에서 수정해가며 사용 시, 데이터가 언제, 어디서 변경되었는지 파악하기 어려움.
but
불변성을 지키면 데이터 변경이 항상 새로운 객체 생성을 통해 이루어지므로 변경 지점 명확히 추적 가능

profile
웹 개발자 되고 시포용

0개의 댓글