본문 바로가기
JAVASCRIPT/ES6

[JS] Currying

by melll93 2023. 2. 3.

1. Currying(커링)이란?

  • 여러 개의 인자를 가진 함수를 하나의 인자를 가진 함수들의 나열로 변환하는 수학적 기법이다.
  • 이것은 추후 React의 상태 관리 라이브러리인 Redux의 컨셉에 필요하다고 하니 미리 알아보도록 하자.
let x = f(a, b, c); // uncurried, x has multiple args

let j = i(a);
let k = j(b);
let x = k(c); // x = k(c) >> x = j(b)(c) >> x = i(a)(b)(c)

x = i(a)(b)(c); // curried, each function(i, j, k) has single arg(a, b, c)

 

 

2. JavaScript에서의 Currying

  • 덧셈 연산 함수를 커링
function x(a, b, c) {
  return a + b + c;
}

function i(a) {
  return function j(b) {
    return function k(c) {
      return a + b + c;
    };
  };
}

console.log("x(1, 2, 3) : " + x(1, 2, 3));
console.log("i(1)(2)(3) : " + i(1)(2)(3));
/******************결과값******************
x(1, 2, 3) : 6
i(1)(2)(3) : 6
****************************************/

 

  • Currying & Arrow Function
function x(a, b, c) {
  return a + b + c;
}

const i = (a) => (b) => (c) => a + b + c;

console.log("x(1, 2, 3) : " + x(1, 2, 3));
console.log("i(1)(2)(3) : " + i(1)(2)(3));

/******************결과값******************
x(1, 2, 3) : 6
i(1)(2)(3) : 6
****************************************/

 

이처럼 커링과 화살표 함수를 적절히 사용하면 코드 양을 눈에 띄게 줄일 수 있다.

 

 

[참조문서]
https://en.wikipedia.org/wiki/Currying

반응형

댓글