[프론트엔드 면접 문제 은행] 부수함수, 순수함수란?

gun·2020년 8월 20일
2

면접문제은행

목록 보기
5/6

순수함수란?

순수함수(pure function)이란 순수 입력과 순수 출력으로 구성된 함수이다. 순수함수는 부수 효과(side-Effect)가 없는 함수로, 사이드 이펙트가 없다는것은 어디서나 동일한 출력을 갖는것을 말합니다.

부수함수란?

외부의 상태를 변경하는 것 또는 함수로 들어온 인자의 상태를 직접 변경하는 것

let c = 1;

function pure (a, b) {
  return a + b + c
}
pure(2,3) //6
pure(3,4) //8
c = 2;
pure(3,4) //9

위 함수는 순수 함수가 아닙다. 함수 외부에 있는 c의 값이 변하면 pure()함수에 같은 값을 입력해도 값이 변하기 때문입니다.

허나 c가 값이 변하지 않는 const로 선언 되어 있다면 순수 함수라고 할수 있습니다.

const c = 1;

function pure (a, b) {
  return a + b + c
}
pure(2,3) //6
pure(3,4) //8
c = 2;    //error
pure(3,4) //8

또 다른 예를 들어보겠습니다.

let out_Side = 1;
function pure(a, b){
  out_Side = a;
  return a + b;
}
pure(2,3) //5
pure(3,4) //7

입력값과 출력값에 대한 변화가 없기 때문에 처음에는 순수 함수 인줄 알았습니다. 허나, out_Side 변수가 pure함수 영역 내에서 변화가 생겼으므로 이것 또한 부수함수가 됩니다.
위에서 부수함수는 '외부의 상태를 변경하는 것 또는 함수로 들어온 인자의 상태를 변경하는 것' 여기서 '외부의 상태를 변경'이 out_Side 에서 일어나게 됩니다.

정리

  1. 순수함수는 side-Effect가 없는 함수를 말한다.
  2. 간단하게 테스트할 수 있다.
  3. 코드 자체가 문서가 된다.
  4. 전역변수 사용을 피하게 된다.

0개의 댓글