불변성
- 데이터가 생성된 후 변경되지 않는다는 개념
- 함수형 프로그래밍에서 특히 중요한 원칙으로 데이터의 안정성과 예측 가능성을 높이는 데 기여함
자바스크립트에서 불변성이 중요한 이유
- 예측 가능한 코드 : 함수나 앱의 동작이 예측 가능해짐
- 부작용 최소화 : 함수가 외부 상태를 변경하지 않으므로, side effect(부작용)이 줄어듬
- 병렬 처리 용이 : 여러 스레드나 프로세스에서 동시에 데이터를 안전하게 읽을 수 있음
- 버그 감소 : 데이터가 의도치 않게 변경되는 버그를 방지할 수 있음
- 리액트 및 리덕스와의 호환성 : React, Redux는 불변성에 최적화 되어있음
불변성 유지 방법
- 원시 값(Primitive Values) : 자바스크립트의 원시 값(숫자, 문자열, 불린)은 기본적으로 불변임
- 불변 객체 생성 : 객체의 속성을 변경하는 대신 동결하여 속성 변경을 방지함, Object.freeze()로 객체를 동결하여 속성 변경을 방지, 또는 스프레드 연산자나 Object.assign()을 사용하여 새 객체를 만들어 속성을 복사함(기존 객체는 그대로 유지)
- 함수형 프로그래밍 기법 : 순수 함수(pure functions)를 사용하여 외부 상태를 변경하지 않음, push,pop,splice 같은 변경 메서드보단, map,filter,concat,slice 같은 새 배열을 반환하는 메서드를 사용