커링은
f(a, b, c)
처럼 단일 호출로 처리하는 함수를f(a)(b)(c)
와 같이 각각의 인수가 호출이 가능하고 호출된 후 병합되도록 변환하는 것이다.
커링패턴은 함수를 반환하는 함수이다. 함수에 인자로 함수를 전달하면 새로운 기능이 추가된 새 함수를 반환한다. 즉, 중복되는 코드를 재활용할 수 있다.
const a = function(value){};
const b = currying(a); ///함수에 함수를 인자로 전달함
function test1(a,b){
return a*b;
}
function test2(c){
return function(d){
return test1(d,c);
}
}
const foo = test2(2);//foo함수에 재활용할 수 있는 함수를 할당한다
foo(5); //10이 출력된다
여기서 test2의 인자가 어떻게 받는지 궁금해졌다.
console.log를 찍어본 결과, test2
의 인자 c
와 리턴 함수 인자 d
는 차례대로 2와 5를 받는다. 아래에서 확인해보자
function test1(a,b){
return a*b;
}
function test2(c){
console.log(c) // 2가 출력
return function(d){
console.log(d) // 5가 출력
return test1(d,c);
}
}
const foo = test2(2);
foo(5);