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
****************************************/
이처럼 커링과 화살표 함수를 적절히 사용하면 코드 양을 눈에 띄게 줄일 수 있다.
반응형
'JAVASCRIPT > ES6' 카테고리의 다른 글
| [JS] module과 import / export (0) | 2023.02.05 |
|---|---|
| [JS] 비동기 처리 (1) - Promise (1) | 2023.02.04 |
| [JS] Spread Syntax (전개 구문, 전개 연산자) (0) | 2023.02.02 |
| [JS] Prototype (0) | 2023.02.01 |
| [JS] 일급 객체와 일급 함수 (First-class Object & Function) (0) | 2023.01.30 |
댓글