고차 함수는 외부 상태 변경이나 가변(mutable) 데이터를 피하고 불변성(Immutability)을 지향하는 함수형 프로그래밍에 기반을 두고 있다.
불변성이 중요한 이유는 리액트의 경우 상태를 참조형태로 받기 때문에 상태들이 변경되었을 때 예기치 않은 오류가 발생할 수 있다.
따라서 객체의 변경이 필요한 경우 객체를 새로 복사해 변경해주는 방법을 사용한다.
함수형 프로그래밍은 순수 함수(Pure function)와 보조 함수의 조합을 통해 로직 내에 존재하는 "조건문과 반복문을 제거"하여 복잡성을 해결하고 변수의 사용을 억제하여 상태 변경을 피하려는 프로그래밍 패러다임이다.
순수 함수 = 부수효과가 없는 함수 즉, 어떤 함수에 동일한 인자를 주었을 때 항상 같은 값을 리턴하는 함수
function pure (a,b) { return a + b;}
//어떠한 부수효과도 발생시키지 않는 순수함수
let c = 10;
function notPure (a, b) { c = b; return a + b;}
notPure(10, 100); // 110c;
// 100 => c의 상태를 변경하기에 순수함수가 아님.