유인동 강사님의 함수형 프로그래밍(ES5)-인프런 강의를 들으면서 커링을 주제로 포스팅하려고 합니다.
커링이란?
예를 들어, _curry함수는 아래와 같이 진행됩니다.
함수를 인자로 받고 즉시 다음 함수를 리턴합니다.
그리고나서 이 함수는 첫번째 인자로 a를 받고 또 다시 다른 함수를 실행합니다.
내부 안쪽에서 인자 a, b를 적용합니다.
function _curry(fn) {
return function(a) {
return function(b) {
return fn(a+b);
}
}
}
즉, 커링은 인자를 여러 개 받는 함수를 분리하여, 인자를 하나씩만 받는 함수의 체인으로 만드는 방법입니다.
함수형 프로그래밍 기법 중 하나로 함수를 재사용하는데 유용하게 쓰일 수 있는 기법입니다.
const add10 = add(10);
console.log(add10(5));
//output will be 15
//또는
console.log(add(5)(3)); //output will be 8
또 다른 예제
function _curryr(fn) {
return function(a) {
return arguments.length === 2 ? fn(a, b) : function(b) { return fn(b, a); };
}
}
let sub = _curryr(function(a, b) {
return a - b;
});
console.log( sub(10,5));
let sub10 = sub(10);
console.log(sub10(5));
인자가 2개가 들어왔다면 fn(a, b)가 실행되고 그렇지 않은 경우는 순서만 변경하여 실행하고 있습니다.
'자바스크립트' 카테고리의 다른 글
Javascript’s __proto__ vs prototype (0) | 2021.06.28 |
---|---|
생성자 함수의 객체 생성 (0) | 2021.06.09 |
함수 객체의 프로퍼티 (0) | 2021.06.08 |
Unexpected comma using map() (0) | 2021.05.22 |
가비지 컬렉션 (0) | 2021.04.03 |