Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Javascript this undefined
- react props
- HD Map
- 자율 주행
- 중첩된 prop
- react
- 고정밀지도
- js call apply bind
- React Child Component
- Prop Drilling
- 고정밀 지도
- 하위 컴포넌트에 prop 전달
- js call
- context api
- js bind
- js apply
- javascript
- 컴포넌트 합성
Archives
- Today
- Total
simkkong
[JavaScript] Currying (커링) 본문
728x90
Currying
커링은 function(a, b, c)처럼 단일 호출로 처리하는 함수를, function(a)(b)(c) 와 같이 각각 단일 인수(argument)로 함수를 호출하여 변환하는 것이다.
첫 번째 인자로 새 함수를 반환하고, 두번쨰 인수가 새로운 함수를 또 반환하며.. 반복해서 모든 인자가 완료될 때까지 실행한다.
커링은 함수를 더 작은 단위로 쪼갤 수 있으며, 순수함수로 사용이 가능해진다. 이로인해 가독성과 유지보수가 용이해지는 효과가 생긴다.
아래와 같이 add 함수를 addCurry 로 커링할 수 있다.
// Noncurried version
const add = (a, b, c) => {
return a + b + c;
};
console.log(add(2, 3, 5)); // 10
// Curried version
const addCurry = (a) => {
return (b) => {
return (c) => {
return a + b + c;
};
};
};
console.log(addCurry(2)(3)(5)); // 10
// es6 Curried version
const addCurry = a => b => c => a + b + c; // 10
addCurry(func) 의 반환 값은 function (a) 형태의 래퍼다. addCurry(2)를 실행하면, function (b)가 반환된다.
// 반환된 function (b)
(b) => {
return (c) => {
return a + b + c;
};
}
마지막 5 인수를 넣고 function (c) 함수를 호출하면, a 와 b, c가 합쳐진 값으로 반환된다.
참고자료
https://ko.javascript.info/currying-partials
'Develop > JavaScript' 카테고리의 다른 글
[JavaScript] this와 call, apply, bind (0) | 2022.11.29 |
---|---|
[JavaScript] 이터러블 프로토콜을 따른 map의 다형성 (0) | 2020.04.12 |
[JavaScript] 호이스팅이란? (0) | 2020.04.05 |
Comments