JavaScript에서 함수는 일급 객체로 취급된다. 그로인해 다음의 특성을 가진다.
다른 함수의 전달인자로 전달되는 함수를 콜백 함수라고 한다.
function double(num) {
return num * 2;
}
function doubleNum(func, num) {
// 함수 func는 함수 doublieNum의 콜백 함수이다.
// 함수 double은 함수 doubleNum의 콜백 함수이다.
return func(num);
}
함수를 리턴하는 함수이다.
function adder(added) {
return function (num) {
return num + added;
};
}
Javascript에 기본적으로 내장된 배열 메서드들 중 일부가 대표적인 고차 함수에 해당한다.
그 중 filter, map, reduce에 대해 알아보자.
모든 배열의 요소 중 특정 조건을 만족하는 요소만 걸러내는 메서드이다.
let arr = [1,2,3];
let output = arr.filter(el => el % 2 === 0);
console.log(output); // -> [2]
각각의 요소에 대해 함수의 반환 값으로 새로운 배열을 만든다.
let arr = [3, 4, 5, 6];
let modifiedArr = arr.map(el => el * 3);
console.log(modifiedArr); // [9, 12, 15, 18]
reduce에는 누산기가 포함되어 있기 때문에, 배열의 각 요소에 대해 함수를 실행하고 누적된 값을 출력할 때 용이하다.
const arr = [1, 2, 3, 4, 5];
const result = arr.reduce((acc, cur, idx) => { return acc += cur; }, 0);
console.log(result); // 15