카테고리 없음
자바 스크립트 커링
lamarcK
2025. 3. 25. 12:55
커링은 여러 개의 인수를 받는 함수를 각각 하나의 인수를 가진 함수들로 나눈 다음 각각의 함수가 return을 통해 다음 함수를 반환하는 체인 구조를 이루도록 바꾸는 기술이다.
따로 커링을 만드는 메서드가 있는 것이 아니라 직접 수정해야한다.
function sum(x, y, z) {
return x + y + z;
}
console.log(sum(1, 2, 3)); // 6
function curriedSum(x) {
return function(y) {
return function(z) {
return x + y + z;
};
};
}
const add1 = curriedSum(1); // x에 1을 부분 적용
const add1and2 = add1(2); // y에 2를 부분 적용
const result = add1and2(3); // z에 3을 적용하여 최종 결과 얻음
함수가 더 길어졌지만 커링을 사용하는 이유는 있다.
커링을 사용하는 이유:
- 함수 재사용성 향상:
- 커링을 통해 특정 인수를 미리 고정하여 재사용 가능한 함수를 만들 수 있다.
- 예를 들어, add(x, y) 함수를 커링하여 add5(y) = add(5, y)와 같이 x가 5로 고정된 함수를 생성할 수 있다.
- 이는 비슷한 기능을 하는 함수를 여러 번 정의하는 대신, 커링된 함수를 재사용함으로써 코드 중복을 줄여준다.
- 함수 조합의 유연성:
- 커링된 함수는 다른 함수와 더 쉽게 조합하여 새로운 함수를 만들 수 있다.
- 함수형 프로그래밍에서 함수 조합은 매우 중요한 개념이며, 커링은 함수 조합을 위한 기반을 제공한다.
- 부분 적용을 통한 함수 생성:
- 필요에 따라 인수를 순차적으로 제공하며 부분적으로 적용된 새 함수를 만들 수 있다.
- 이는 비동기 작업이나 이벤트 처리와 같이 인수가 순차적으로 제공되는 상황에서 유용하다.
- 코드 가독성 향상:
- 복잡한 함수 호출을 여러 단계로 나누어 코드를 더 읽기 쉽고 이해하기 쉽게 만들 수 있다.
- 각 단계에서 필요한 인수만 제공하므로, 함수 호출의 의도를 명확하게 드러낼 수 있다.
예시:
- 이벤트 핸들러: 특정 이벤트에 대한 핸들러 함수를 커링하여 이벤트 객체와 추가 인수를 순차적으로 처리할 수 있다.
- 데이터 유효성 검사: 다양한 유효성 검사 규칙을 커링하여 특정 데이터에 대한 유효성 검사 함수를 생성할 수 있다.
- 설정 관리: 애플리케이션 설정을 커링하여 특정 설정이 적용된 함수를 생성할 수 있다.