카테고리 없음

순수 함수

lamarcK 2025. 3. 25. 11:32

순수 함수(pure function)는 어떠한 종류나 형태가 아니라 특정 규칙을 만족하는 함수이다.

즉 특정 조건을 만족하는 함수라면 모두 순수 함수다.

순수 함수의 조건

1. 동일한 입력, 동일한 출력

 

  • 같은 입력 값을 넣으면 언제나 똑같은 결과가 나와야 한다.
  • 함수의 결과는 오로지 입력 값에만 의존하며, 외부의 어떤 것도 참조하거나 변경하지 않는다.
function add(x, y) {
  return x + y;
}

 

매개 변수 x와 y에 어떤 값을 넣어도 동일한 값이 나온다.

2. 부작용(side effect) 없음(독립성)

  • 순수 함수는 외부의 어떤 상태도 변경해서는 안 되고 외부의 어떤 상태에도 의존해서는 안 된다.
  • 즉, 매개 변수 외에 어떠한 변수, 함수 등을 비롯한 외부 요소는 모두 참조해선 안된다. 또한 함수가 외부에 영향을 줘서도 안된다.
function pureFunction(x, y) {
  let internalValue = 2; // 내부 변수
  return x + y + internalValue; // 매개변수와 내부 변수만 사용
}

console.log(pureFunction(2, 3)); // 7
// 외부 변수는 사용되지 않았으므로 외부 상태에 영향을 주지 않습니다.

순수함수는 매개 변수에 외부 변수를 사용하는 것은 가능하다.

순수 함수 내에서 외부 변수를 사용하는 것이 안되는 것이지 매개 변수로 외부 변수를 받는 것은 가능하다.

이는 값을 복사해서 사용하는 개념이기 때문이다.

// 외부 변수
let externalValue = 10;

// 순수 함수 (매개변수를 통해 외부 변수 값을 전달받음)
function pureFunction(x, y) {
  return x + y; // 외부 변수를 직접 참조하지 않고 매개변수 y를 사용
}

// 순수 함수 호출
let result1 = pureFunction(5, externalValue); // 가능: externalValue 값을 매개변수 y로 전달
console.log(result1); // 15

순수 함수의 장점

  • 예측 가능성:
    • 순수 함수는 입력 값만으로 결과를 예측할 수 있으므로, 코드의 가독성과 유지보수성을 높인다.
  • 테스트 용이성:
    • 순수 함수는 외부 상태에 의존하지 않으므로, 테스트하기 쉽다.
    • 다양한 입력 값에 대해 결과를 검증하기 용이하다.
  • 병렬 처리 및 캐싱:
    • 순수 함수는 외부 상태를 변경하지 않으므로, 병렬 처리 환경에서 안전하게 실행할 수 있다.
    • 또한, 동일한 입력에 대한 결과를 캐싱하여 성능을 향상시킬 수 있다.
  • 불변성:
    • 순수함수는 함수의 인수로 전달된 값을 변경하지 않는다.
    • 이러한 특징은 불변성을 유지할 수 있도록 도와준다.
  •  
  •