JS 순수함수

순수함수란?

자바스크립트에서 순수함수는 함수형 프로그래밍에서 중요한 개념이다. 순수함수는 부작용(side-effect)이 없고 동일한 입력에 대해 항상 동일한 출력을 보장하는 함수이다. 이를 통해 코드의 예측 가능성과 안정성을 높일 수 있다.

 

순수함수의 주요 특징

참조 투명성 - Referentially Transparent

함수에 동일한 인자를 넣으면 항상 동일한 결과가 나와야 한다. 예를 들어 함수 add가 2와 3을 입력받았을 때 항상 5를 반환해야 한다.

 

부수 효과 없음 No Side-Effects

함수의 실행이 외부 상태나 데이터에 영향을 미치지 않아야 한다. 예를 들어 함수 내부에서 변수 값을 변경하거나 파일 시스템, 네트워크, DOM 등을 수정하면 부작용이 발생했다고 할 수 있다.

 

순수함수 예시

function add(a, b) {
    return a + b;
}

console.log(add(2, 3));  // 5
console.log(add(2, 3));  // 5 (항상 동일한 결과)

 

순수함수가 아닌 함수 예시

let count = 0;

function increment() {
    count++;
    return count;
}

console.log(increment());  // 1
console.log(increment());  // 2 (입력 없이 다른 결과가 나옴)

 

순수함수의 장점

  • 테스트 용이성
    동일한 입력에 대해 항상 동일한 출력을 반환하므로 함수의 동작을 예측하기 쉽고 테스트하기도 쉽다.
  • 병렬 처리
    부작용이 없기 때문에 순수함수는 병렬 처리가 가능하여 성능을 높이는 데 유리하다.
  • 코드의 신뢰성
    외부 상태에 의존하지 않으므로 코드의 일관성과 신뢰성을 높일 수 있다.
  • 디버깅 용이성
    상태 변화를 추적할 필요가 없으므로 디버깅 과정이 단순해진다.