커링(Currying) 기법은 인자가 여러개인 함수의 일부 인자를 고정시키는 새로운 함수를 만드는 방법을 의미한다. 즉 인자가 n개인 함수를 n개로 분리하여 사용하게끔 만드는 방법이다.
주로 HOC(Higher-Order Function) 와 함께 사용된다.
간단한 예제를 살펴보면
function helloFunc(writer, title) {
console.log(${writer}, ${title});
}
word와 name이라는 두 개의 인자를 받아서 출력해주는 단순한 형태의 함수가 있다.
위 함수에 HOC를 포함한 커링을 적용시키게 되면
function exampleFunc(writer) {
return function (title) {
console.log(`${writer}, ${title}`);
};
}
const newExampleFunc = exampleFunc(writer);
newExampleFunc("newTitle"); // writer, newTitle
newExampleFunc("newTitle2"); // writer, newTitle2
위 처럼 나뉘게 된다는 소리이다.
사용법에따라 함수에서 응용할 수 있는 범위가 매우 넓은 기법이며
적용할 때는 인자의 순서가 매우 중요하고, 변동 가능성이 적은 인자는 앞에, 변동 가능성이 높은 인자는 뒤에 배치해야 한다.