TIL 107. 순수함수

isk·2023년 4월 23일
0

TIL

목록 보기
108/122
post-custom-banner

순수 함수(pure function)란 동일한 인자를 받았을 때 항상 같은 값을 반환하며,
함수 외부의 어떠한 상태도 변경하지 않는 함수를 말한다.

즉, 함수 내부에서 상태를 변경하지 않으며, 주어진 입력값에 대해서만 결과를 계산하며
순수 함수는 부작용(side effect)이 없는 함수다.

부작용(side effect)이란 함수가 외부 상태를 변경하거나 입출력(IO) 작업을 수행하는 것을 말한다.
부작용이 있는 함수는 같은 입력값에 대해서 다른 출력값을 반환할 수 있는데, 외부 상태가 변경되기 때문이다.

순수 함수는 부작용이 없기 때문에 여러 가지 장점을 가지고 있다.
먼저, 순수 함수는 독립적이기 때문에 코드를 이해하기 쉽고, 디버깅이 쉽다.
또한 함수의 재사용성이 높아지며, 함수를 테스트하기도 쉽다.
이러한 이유로 순수 함수는 함수형 프로그래밍에서 매우 중요한 개념이다.

반면에 부작용이 있는 함수는 코드를 이해하기 어렵고, 디버깅이 어렵다.
또한 함수가 의존하는 외부 상태가 변경될 경우, 함수의 결과도 달라질 수 있기 때문에 예측이 어렵다.

따라서, 함수가 순수 함수인지 여부를 판단하는 것은 중요한 일이다.
함수가 외부 상태를 변경하지 않는다면 순수 함수다.
순수 함수는 동일한 입력에 대해서는 항상 동일한 출력을 반환하기 때문에 함수의 결과가 예측 가능하며,
테스트하기도 쉽다.

순수함수

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

console.log(add(2, 3)); // 5
console.log(add(2, 3)); // 5
console.log(add(2, 3)); // 5

위의 add 함수는 인수로 받은 두 개의 숫자를 더한 값을 반환한다.
이 함수는 항상 동일한 인수에 대해 같은 결과를 반환한다.
또한, 함수 외부의 어떤 상태도 변경하지 않으며, 부작용이 없다. 따라서, add 함수는 순수 함수다.

순수함수 X

let x = 0;
function increment() {
  x += 1;
  console.log(x);
}

increment(); // 1
increment(); // 2
increment(); // 3

위의 increment 함수는 실행될 때마다 외부의 변수 x를 변경하고, 콘솔에 값을 출력한다.
이 함수는 부작용이 있으므로 순수 함수가 아니다.

post-custom-banner

0개의 댓글