**고차 함수(higher-order function)**는 다음 중 적어도 하나를 하는 함수입니다: 함수를 인수로 받기, 또는 함수를 반환하기. JS에서 함수가 *일급 값(first-class value)*이기 때문에 가능합니다(다른 값처럼 전달할 수 있음).
함수를 받기
js
[1, 2, 3].map( n * );
button.(, handler);
( (), );
**고차 함수(higher-order function)**는 다음 중 적어도 하나를 하는 함수입니다: 함수를 인수로 받기, 또는 함수를 반환하기. JS에서 함수가 *일급 값(first-class value)*이기 때문에 가능합니다(다른 값처럼 전달할 수 있음).
[1, 2, 3].map( n * );
button.(, handler);
( (), );
function multiplier(factor) {
return n => n * factor; // `factor`를 기억하는 함수를 반환
}
const double = multiplier(2);
const triple = multiplier(3);
double(5); // 10
triple(5); // 15
여기서 multiplier는 일반적인 함수로부터 특화된 함수를 만듭니다 — 클로저가 factor를 캡처합니다.
function withLogging(fn) {
return (...args) => {
console.log(`calling with`, args);
const result = fn(...args);
console.log(`result`, result);
return result;
};
}
const loggedAdd = withLogging((a, b) => a + b);
고차 함수는 코드를 선언적이고 재사용 가능하게 만듭니다.
배열 메서드(map/filter/reduce), 이벤트 처리, 미들웨어, 데코레이터, 커링, 그리고 React 패턴(HOC, 커스텀 훅)의 기반이 됩니다.
같은 루프 로직을 반복해서 작성하는 대신, 동작을 함수로 전달합니다.