Front-end/JavaScript

JS FP 6편 - 부분 적용 함수(Partial Application)

파리외 개발자 2023. 3. 11. 18:24

부분 적용과 커링의 차이

 

커링

//Currying
const add = (a, b, c) => a + b + c;

const curriedAdd = (a) => (b) => (c) => a + b + c;
curriedAdd(1)(2)(3); //currying expect one arg at time

커링은 한 번에 하나의 인자를 전달하는 것이 원칙이다.

또한 마지막 인자가 완성되기까지 원본함수인 add는 대기한다.

부분적용

//Partial Application
const add = (a, b, c) => a + b + c;

const partialAdd5 = add.bind(null, 1);
partialAdd5(2, 3); //second call expect all the arg

부분 적용은 호출 때마다 원본함수인 add가 실행된다.

또한 두 번째 실행 때 나머지 인자들을 모두 전달해야 한다.

또 bind 등으로 이뤄졌기 때문에 this값에 영향을 받는 obj내부의 메서드에서 사용이 힘들다.