Front-end/JavaScript

JS FP 4편 - 불변성(Immutability)

파리외 개발자 2023. 3. 9. 18:06

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는 불변성을 지킬 수 있게 된다.