커링 (Currying) 이란, 함수의 재사용성을 높이기 위해 함수자체를 return하는 함수이다.
*커링과 같이 함수 자체를 인자로 받거나 반환하는 함수를 고차함수라고 하기도 한다.
일반함수
function add(num1, num2) {
console.log(num1 + num2);
}
add(5, 8); // 13
커링함수
function add(num1, num2) {
return num1 + num2;
}
// add() 함수를 return 하는 또 다른 함수를 return
function addPlus(num1) {
return function(num2) {
console.log(add(num1, num2));
}
}
// 화살표 함수로 표현 (위와 동일)
addPlus = num1 => num2 => console.log(add(num1, num2));
// 출력 (파라미터를 하나씩)
addPlus(5)(4); // 9
일반함수
// first = 010, tel = 010이후의 8자리
function phoneNum(first, tel) {
console.log(first + tel);
}
phoneNum(01001230505); // 01001230505
phoneNum(01005253433); // 01005253433
커링 함수 활용
function phoneNum(first, tel) {
console.log(first + tel);
}
const phoneNumber = first => number => phoneNum(first, number);
const phoneNumber010 = phoneNumber('010');
phoneNumber010(01230505); // 01001230505
phoneNumber010(05253433); // 01005253433