1. Higher-Order Function(고차함수)란?
: 함수를 인자로 전달받거나 함수를 결과로 반환하는 함수 !
이때, 다른 함수의 인자로 전달되는 함수를 콜백 함수라고 한다.
: 사용하는 이유! 코드를 간결하고 유연하게 작성하기 위해서
// 함수를 인자로 받는 경우
function apply(func, arg) {
return func(arg);
}
function double(x) {
return x * 2;
}
apply(double, 5); // 10
// 함수를 반환하는 경우
function multi(num){
return function(x){
return x * num;
}
}
const triple = multi(3);
triple(5); // 15
2. Abstracting Patterns of Control(제어 패턴 추상화)
: 함수의 흐름을 제어하는 파라미터로써 수용한다.
=> 쉽게 말해, 함수형 프로그램에서 자주 사용되는 패턴들을 추상화하여 코드의 재사용성을 높이는 기술 !
** 제어 패턴은 조건문(if/else)나 반복문(for/while)과 같은 제어 구조를 의미함. (코드의 복잡도를 증가시키는 원인 중 하나)
- 제어 패턴 추상화의 대표적인 예 - 배열(Arry)메소드 `map()`, `filter()`, `reduce()`
// Bad !!
const numbers = [1, 2, 3, 4, 5];
const squaredNumbers = [];
for (let i = 0; i < numbers.length; i++) {
const square = numbers[i] * numbers[i];
squaredNumbers.push(square);
}
console.log(squaredNumbers); // [1, 4, 9, 16, 25]
// Good !!
const numbers = [1, 2, 3, 4, 5];
const square = x => x * x;
const squaredNumbers = numbers.map(square);
console.log(squaredNumbers); // [1, 4, 9, 16, 25]
위처럼 `map()`메소드를 통해 `for`루프를 사용하는 것보다 더 간결하게 배열을 처리할 수 있다 !
'[FrontEnd] 프론트엔드' 카테고리의 다른 글
| [Next.js] SEO란? (2) | 2023.04.28 |
|---|---|
| [React] OCP(Open Closed Principle)이란? (1) | 2023.03.17 |
| [Javascript] 커링(Currying)이란? (0) | 2023.03.16 |
| [React] createContext, useMemo (2) | 2023.03.08 |
| [TypeScript] 타입스크립트란? + (기본 타입) (0) | 2023.03.06 |