JS의 불변성
불변성이란 함수등의 동작을 거쳐도 대상이 되는 변수의 값이 변하지 않는 것을 의미하며
side effect의 중요성이 있는 FP에서는 불변성을 지키는 편이 좋다.
const obj = { name: "Kim" };
obj.name = "Park";
객체 obj가 있을 때 name 속성을 park로 바꿀 수 있다면
obj는 불변성이 지켜지지 않는 것이다.
const는 재할당이 불가능하다, 하지만 그게 불변성이 지켜진다는 것은 아니다.
//Immutability
const obj = { name: "Kim" };
function clone(obj) {
return { ...obj }; //this is pure
}
function updateName(obj) {
const obj2 = clone(obj);
obj2.name = "Park";
return obj2;
}
const updateObj = updateName(obj);
console.log(obj, updateObj);
함수를 작성할 때 변환하고 싶은 대상을 새롭게 만들어서
리턴한다면 연산에 사용된 매개체인 obj는 불변성을 지킬 수 있게 된다.
'Front-end > JavaScript' 카테고리의 다른 글
JS FP 6편 - 부분 적용 함수(Partial Application) (0) | 2023.03.11 |
---|---|
JS FP 5편 - 함수형 프로그래밍의 핵심기술(Hof, clusure, currying) (0) | 2023.03.10 |
JS FP 3편 - 선언형과 명령형(Imperative vs Declarative) (0) | 2023.02.20 |
JS FP 2편 - 참조 투명성과 멱등성(Idempotence) (0) | 2023.02.19 |
JS FP 1편 - side effect (0) | 2023.02.16 |