고차 함수는 함수를 인자로 전달받거나 함수를 결과로 반환하는 함수를 말한다.
고차함수는 인자로 받은 함수를 필요한 시점에 호출하거나 클로저를 생성하여 반환한다.
자바스크립트의 함수는 일급 객체이므로 값처럼 인자로 전달할 수 있으며 반환할 수도 있다.
// 고차 함수
function makeCounter(func) {
var count = 0;
return function () {
count = func(count);
return count;
}
}
var predicate = {
inc: n => ++n,
dec: n => --n
}
var incCounter = makeCounter(predicate.inc);
console.log(incCounter());
console.log(incCounter());
console.log(incCounter());
var decCounter = makeCounter(predicate.dec);
console.log(decCounter());
console.log(decCounter());
console.log(decCounter());