자바스크립트에서의 함수 커링(함수 조합)의 미스터리
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 초보 자바스크립트 개발자 및 함수형 프로그래밍 개념 학습자
- 중간 수준 개발자에게 재사용성과 모듈화를 위한 실용적인 패턴 제공
- 복잡한 매개변수 처리가 필요한 실무 개발자에게 유용
핵심 요약
- 커링은 다중 매개변수를 받는 함수를 단일 매개변수를 받는 함수의 연쇄 구조로 변환하는 기법
multiply(2)(5)
처럼 재사용 가능한double
함수를 생성해 반복적 코드를 줄임- 커링 함수는
curry(fn)
패턴으로 구현 가능하며,args.length >= fn.length
조건으로 동작
섹션별 세부 요약
1. 커링의 기본 개념
- 정규 함수 vs 커링 함수 비교
add(a, b)
→add(a)(b)
형식으로 분리add(2)(3)
실행 시a=2
,b=3
순서로 처리- 커링의 정의
Currying is transforming a function that takes multiple arguments into a series of functions that take one argument at a time.
2. 커링의 실용적 예시
multiply
함수 활용multiply(2)(5)
→2 * 5 = 10
double = multiply(2)
로 재사용 가능한 함수 생성greet
함수 팩토리 예시greet("Hello")("Sudhil")
→"Hello, Sudhil!"
- 재사용 가능한 함수 패턴으로 메시지 생성
3. 커링 구현 방법
- 커링 함수
curry(fn)
구현 function curry(fn) { return function curried(...args) { ... } }
args.length >= fn.length
조건으로 종료 또는 재귀 호출- 다양한 호출 방식 지원
curriedSum(1)(2)(3)
또는curriedSum(1, 2)(3)
가능
4. 커링의 장단점 및 사용 시점
- 장점
- 모듈화된 로직 생성 (예:
double
,sayHello
함수) - 매개변수의 유연한 처리 (단계적 입력 지원)
- 단점
- 과도한 사용 시 코드 가독성 저하 가능성
- 모든 상황에 적용이 필요하지 않음
- 사용 권장 시점
- 유틸리티 함수, 설정 기반 행동, 재사용 가능한 패턴 구현 시
결론
- 커링은
function curry(fn)
패턴을 사용해 구현 가능하며, 매개변수를 단계적으로 처리하는 기법 multiply(2)(5)
처럼 반복되는 로직을 최소화하고, 재사용 가능한 함수를 생성할 때 유용- 실무에서는 코드 정리 및 모듈화가 필요할 때, 아닌 경우는 과도한 사용을 피해야 함