함수는 대표적인 일급객체이다. JS에서 함수는 다음과 같은 취급이 가능하다.
변수에 함수를 할당 가능하여 배열의 요소나 프로퍼티의 값을 사용할 수 있다. 다른 함수를 인자로 받거나, 함수를 리턴하는 함수를 고차함수라고 한다.
function add5 (num) {
return num + 5;
}
function added5num (func, num) {
return func(5);
}
let output = added5num(add5, 5); // 10
added5num 함수는 함수를 인자로 받는 고차함수이다. 매개변수 func에 들어오는 함수는 콜백함수로 위의 예에서 add5는 added5num의 콜백함수이다. 위의 예시처럼 함수를 인자로 받거나, 함수를 리턴한다.
이런 함수의 특성을 사용한 filter, map, reduce 등 내장 고차함수들이 존재한다.