언어·프레임워크/JavaScript
[JavaScript] 커링 함수 이해하기
DandyNow
2025. 6. 10. 21:31
728x90
반응형
JavaScript에서 커링 함수 이해하기
JavaScript에서 커링(Currying) 함수는 특정 패턴으로 동작하는 함수이다. 여러 개의 인수를 받는 함수를 단일 인수를 받는 여러 개의 함수로 분할하는 과정을 말한다. 이는 함수형 프로그래밍의 핵심 개념 중 하나로, 유연하고 재사용 가능한 코드를 작성하는 데 도움을 준다.
1. 커링 함수의 개념
커링은 함수가 받는 인수의 개수를 줄이는 기술이다. 원래 함수가 f(a, b, c)
와 같이 세 개의 인수를 받는다면, 커링을 적용하면 f(a)(b)(c)
와 같이 하나의 인수를 받는 함수들을 순차적으로 호출하는 형태로 바뀐다.
- 예시:
// 커링을 적용하지 않은 일반 함수
function add(x, y) {
return x + y;
}
console.log(add(2, 3)); // 5
// 커링을 적용한 함수
function curriedAdd(x) {
return function(y) {
return x + y;
};
}
const addTwo = curriedAdd(2);
console.log(addTwo(3)); // 5
console.log(curriedAdd(2)(3)); // 5
위 예시에서 curriedAdd
함수는 x
를 인수로 받아 새로운 함수를 반환한다. 이 반환된 함수는 y
를 인수로 받아 최종적으로 x + y
를 계산한다.
2. 커링 함수를 사용하는 이유
커링 함수를 사용하는 데는 여러 가지 장점이 있다.
- 함수 재사용성 및 부분 적용(Partial Application): 커링은 특정 인수를 고정하여 새로운 함수를 만들 수 있게 해준다. 이를 부분 적용이라고 부른다. 특정 값을 미리 설정해두고 싶을 때 유용하다.
- 예시:
log
함수를 커링하여logInfo
,logError
등 특정 메시지 타입을 위한 함수를 미리 만들어둘 수 있다.
function log(level) {
return function(message) {
console.log(`[${level}] ${message}`);
};
}
const logInfo = log('INFO');
const logError = log('ERROR');
logInfo('사용자가 로그인하였습니다.'); // [INFO] 사용자가 로그인하였습니다.
logError('데이터베이스 연결에 실패하였습니다.'); // [ERROR] 데이터베이스 연결에 실패하였습니다.
- 코드의 가독성 향상: 커링을 통해 함수 호출 체인이 명확해지고, 각 단계에서 어떤 데이터가 처리되는지 이해하기 쉬워진다. 특히 파이프라인이나 함수 조합 시 유용하다.
- 지연 평가(Lazy Evaluation) 및 함수 조합: 모든 인수가 한 번에 제공되지 않아도 되므로, 필요한 시점에 인수를 전달하여 함수를 실행할 수 있다. 이는 복잡한 함수를 작은 단위로 쪼개어 조합할 때 특히 효과적이다. 함수형 프로그래밍에서 여러 함수를 연결하여 데이터를 처리하는 파이프라인을 구성할 때 커링이 강력한 도구가 된다.
- 인수 유효성 검사: 각 단계에서 인수를 하나씩 받으므로, 각 인수마다 유효성 검사를 수행할 수 있는 기회를 제공한다.
커링은 코드를 더 유연하고 모듈화하며 재사용하기 쉽게 만들어주며, 특히 함수형 프로그래밍 패러다임을 따르는 데 중요한 역할을 하는 개념이다.
728x90
반응형