고차함수는 함수를 인자로 받을 수 있고, 함수의 형태로 리턴할 수 있는 함수
어떤 고차 함수에 함수를 인자로 전달하고, 고차 함수는 함수 자체를 리턴하는 경우, 함수(caller)의 인자로 전달되는 함수를 콜백 함수(callback function)이라고 한다.
콜백함수는 함수내에서 콜백함수를 조건에 따라 호출(invoke) 여부 결정
- 커리함수 : 함수를 리턴하는 함수
function curryFunc(callBackFunc()){
return callBackFunc();
}
function callBackFunc(){
return 'Call Back';
}
Javascript bult-in higher order functions
자바스크립트의 대표적인 내장 고차함수는 Array의 함수들이 있다.
filter : boolean을 리턴하는 함수를 인자로 받아 배열의 요소마다 true를 리턴하는 경우의 인자들만 포함된 배열을 리턴한다.
const arr = [1,2,3,4,5];
const filteredArr = arr.filter(element => element%2===0);// [2,4]
map : 배열의 모든 요소에 동일한 함수를 진행한 값들이 포함된 배열을 리턴한다.
const mappedArr = arr.map(element => element*2);// [2,4,6,8,10]
reduce : 배열의 모든 요소를 특정 함수로 누적 연산하여 응축 값을 리턴한다.(초기값 설정 가능!)
const reducedArr = arr.reduce((prev,cur) => prev+cur, 0); // 15
고차 함수 사용의 장점
Method Chaining : 메서드가 객체를 반환하면 반환 값인 객체를 통해 또 다른 함수를 호출하는 패턴
const chainedArr = arr.filter(element => element%2===0).map(element => element*2)
.reduce((prev,cur) => prev+cur, 0);// 12