커링(Currying)
- 커링 기법이란?
여러 개의 인자를 받는 함수를 단일 인자를 받는 함수들의 연속으로 변환하는 것이다. 즉 n개의 인자를 받는 함수를 n개의 단일 인자를 받는 함수로 변환 하는것
예를들어 두 개의 인자를 받는 함수가 있다고 가정해보자
//두 개의 인자를 받는 함수
function add(a,b){
return a+b;
};
//커링을 적용하면 다음과 같이 변환할 수 있다.
function curringAdd(a){
return function(b){
return a+b;
};
};
이렇게 하면 curringAdd(2)를 호출하면 2를 고정한 새로운 함수를 반환하고 그 후에 newFunction(3)을 호출하면 최종적으로 5를 반환한다.
장점
- 재사용성
특정 인자를 고정한 상태로 새로운 함수를 생성할 수 있어 코드의 재사용성이 높아짐 - 지연 평가
필요한 인자를 나중에 제공할 수 있어 유연한 함수 호출이 가능함 - 가독성
코드의 가독성을 높일 수 있다. 특히 복잡한 함수 조합에서 유용함
커링 예제
// 두 수를 더하는 커링 함수
function curriedAdd(a) {
return function(b) {
return a + b;
};
};
//사용예시
const add5 = curringAdd(5) // 5를 고정한 새로운 함수 생성
console.log(add5(3))//8출력
console.log(add5(5))//10출력
//직접 여러 인자를 사용하는 것도 가능하다.
function curringAddMulti(a){
return function(b){
return function(c){
return a+b+c;
};
};
};
const add5And3 = curringAddMulti(1)(2);
console.log(add5And3(3)) //6 출력
curriedAddMultiple(1)를 호출하면 1를 고정한 새로운 함수를 반환한다.
이 함수는 b를 인자로 받는다.
그 다음 (2)을 호출하여 b를 2으로 고정한 새로운 함수를 반환한다.
이 함수는 이제 c를 인자로 받는다.
최종적으로 add5And3(3)를 호출하면, c에 3를 전달하여 1 + 2 + 3를 계산하게 된다.
- 전체 흐름
단계 1: curriedAddMultiple(1) 호출 → a가 1로 고정된 함수 반환
단계 2: 반환된 함수에 (2)을 호출 → b가 2으로 고정된 함수 반환결과: 최종 결과인 6이 출력
단계 3: 반환된 함수에 add5And3(3) 호출 → c가 3로 설정되어 1 + 2+ 3계산
'JavaScript' 카테고리의 다른 글
localeCompare 메서드 : 문자열 정렬순서 결정 (0) | 2025.02.27 |
---|---|
JS 정규 표현식(Regular Expression) (0) | 2025.02.27 |
prettier 설정 (0) | 2024.09.29 |
Set 데이터 구조 (0) | 2024.08.27 |
시간복잡도,공간복잡도/투 포인터 , 슬라이딩 윈도우 (0) | 2024.08.26 |