순수함수
란?
하나 이상의 인자를 받고, 인자를 변경하지 않고, 참조하여 새로운 값을 반환하는 함수
즉, 같은 input동일한 인자가 전달되면 항상 동일한 결과를 반환하는 함수(코드 블록)입니다.
예시
(1) 순수함수
// 매개변수를 복사한 값을 변경하는 순수함수
const addSixPure = (arr) => {
// 펼침 연산자로 새로운 배열에 6 추가
newArr = [...arr, 6];
return newArr;
};
(2) 순수함수가 아닌 것
const num_arr = [1, 2, 3, 4, 5];
// 매개변수의 값을 직접 변경하는 불순함수
const addSixImpure = (arr) => {
// 매개변수에 직접 6 추가
arr.push(6);
return arr;
};
사이드이펙트
란?
함수 외부의 상태를 변경하는 것으로 변화를 예측할 수 없기 때문에 예기치 못한 오류를 발생시킬 가능성이 있습니다.
불변성
이란?
메모리에 있는 값을 변경할 수 없는 것을 말한다. 자바스크립트의 데이터 형태중에 원시 데이터(숫자, 문자, 불리언등)는 불변성이 있고, 원시 데이터가 아닌 객체, 배열, 함수는 불변성 없다.
- 불변성을 지킴으로써 얻을 수 있는 이점은 먼저 예기치 못한 사이드이펙트를 방지할 수 있다. 리액트에서 state를 직접 변경하지 않고 setState를 사용하는 것이 불변성을 지키는 방법이다.
순수함수란 동일한 입력에 대해 언제나 동일한 결과를 리턴하는 함수를 의미하며 그래서 사이드 이펙트를 일으키지 않는 함수를 의미합니다. 사이트 이펙트란 함수 외부의 상태를 변경하는 것으로 변화를 예측할 수 없기 때문에 예기치 못한 오류를 발생시킬 가능성이 있는데 이 때 불변성을 지키면 예기치 못한 사이드 이펙트를 방지할 수 있습니다.
💟 참고자료