본문 바로가기

자바스크립트

Currying

유인동 강사님의 함수형 프로그래밍(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