순수 함수와 일급 함수 한 장에 정리
순수 함수
순수 함수는 동일한 인자에 상응하는 동일한 리턴 값을 가지는 함수입니다. 그러므로, 평가 시점이 변경이 되더라도 동일한 결과를 리턴하기 때문에 다루기 쉬운 함수가 됩니다. 순수 함수는 객체의 변경이 필요할 경우 새로운 객체를 생성하여 리턴합니다.
외부 변수를 사용하거나 외부 변수를 변경하면 순수 함수가 아닙니다. 비순수 함수는 평가 시점에 따라 다른 결괏값을 가지기 때문에 평가 시점을 미세하게 다뤄야 합니다.
js
// 순수함수
const add = (a, b) => a + b;
const add1 = (obj, b) => ({val : obj.val + b})
// 비순수함수
const add2 = (a, b) => a + b + c;
const add3 = (a, b) => {
c = b;
return a + b;
};
const add4 = (obj, b) => {
obj.val += b;
};
일급 함수
일급 함수는 값으로 다룰 수 있는 함수를 말합니다. 값으로 다룰 수 있기 때문에 인자로 전달할 수 있고, 리턴할 수 있고 언제든지 정의가 가능합니다.
js
const f1 = a => a * a;
const f2 = () => f1;
const f3 = f => f();