순수함수(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 에서 일어나게 됩니다.