커링(Currying)은 함수의 재사용성을 높이기 위해 함수 자체를 return하는 함수입니다. 함수를 하나만 사용할 때는 필요한 모든 파라미터를 한 번에 넣어야 합니다. 커링을 사용하면 함수를 분리할 수 있으므로 파라미터도 나눠 전달할 수 있습니다.
* 커링과 같이 함수 자체를 인자로 받거나 반환하는 함수를 '고차 함수' 라고 부르기도 합니다.
[일반적인 함수]
function add(num1, num2) {
console.log(num1 + num2);
}
add(5, 8); // 13
[커링(Currying) 함수]
커링을 사용하면 num1 하나를 파라미터로 받고, 그 다음으로 num2를 파라미터로 받아서 함수를 재사용할 수 있습니다.
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
왜 위와 같은 커링을 사용할까요? 기존 함수와 비교하면서 살펴보도록 하겠습니다.
보통 휴대폰 번호를 입력할 때 휴대폰 앞의 010은 거의 같아서 출력할 때 아래와 같이 출력될 것입니다.
// 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
phoneNumber010 함수는 첫 번째 인자로 010을 세팅하고 나머지 8자리만 전달 받아서 010과 함께 출력해주는 함수입니다. 이렇게 하면 함수를 재사용해서 사용하므로 파라미터를 나누어 전달해서 코드를 효율적으로 작성할 수 있습니다.
'1. 웹개발 > 1_1_1 JavaScript' 카테고리의 다른 글
[Javascript] 시간 복잡도 정리 및 예제 (0) | 2022.04.27 |
---|---|
[Javascript] push() 대신 펼침 연산자로 원본 변경을 피하는 방법 (0) | 2022.04.21 |
[JavaScript] 실무에 유용한 Array API 함수들 (1) | 2021.06.11 |
[JavaScript] function 정리 (ES6) (0) | 2021.06.08 |
[JavaScript] toFixed()와 toPrecision() 메소드 (0) | 2020.06.30 |