즉, 입력값만을 기반으로 결과를 계산하며, 그 외의 어떤 상태도 변경하지 않는다.
순수함수 예시:
function add(a, b) {
return a + b;
}
// 순수 함수인 add를 호출
const result = add(3, 5); // 결과: 8
여기서 add 함수는 같은 입력 (3, 5)에 대해 항상 같은 결과 8을 반환하며, 외부 상태를 변경하지 않는다. 이러한 특성은 함수형 프로그래밍에서 중요하며, 상태와 가변성을 피하고 불변 데이터를 중심으로 프로그램을 작성하는데 활용된다.
순수 함수는 코드의 예측 가능성과 유지 보수성을 높이는데 도움이 된다.
비순수 함수의 특징:
외부 상태에 의존:
비순수 함수는 외부 상태에 의존하거나 외부 상태를 변경한다.
함수 내부에서 외부 상태를 직접 참조하면 외부 상태에 의존하게 되어 변환값이 변할 수 있고, 외부 상태도 변경할 수 있다.
부수 효과 (Side Effect):
비순수 함수는 부수 효과가 있는 함수다.
부수 효과란 함수 실행 중에 발생하는 외부 상태의 변경을 의미한다. 예를 들어, 파일을 수정하거나 네트워크 요청을 보내는 것이 부수 효과다.
비순수 함수 예시:
var count = 0; // 현재 카운트를 나타내는 상태
// 비순수 함수 increase는 외부 상태에 의존하며 외부 상태를 변경한다.(여기선 count)
function increase() {
return ++count;
}
// 비순수 함수는 외부 상태 (count)를 변경하므로 상태 변화를 추적하기 어렵다.
increase();
console.log(count); // 1
increase();
console.log(count); // 2
비순수 함수는 외부 상태에 의존하거나 외부 상태를 변경하므로 상태 변화를 추적하기 어렵다. 이와 달리 순수 함수는 항상 같은 입력에 대해 같은 결과를 반환하므로 예측 가능한 함수다.
비순수 함수는 특정 상황에서 유용할 수 있지만, 순수 함수를 사용하는 것이 코드의 예측 가능성과 유지 보수성을 높이는 데 도움이 된다.