Higher Order Functions
Higher Order Functions (HOF) are functions that take other functions as arguments or return functions.
Functions as Arguments (Callbacks)
function doTwice(fn) {
fn()
fn()
}
doTwice(() => console.log('Hello!'))
// Hello!
// Hello!
Array HOFs
const numbers = [1, 2, 3, 4, 5]
// map
const doubled = numbers.map(n => n * 2)
// filter
const evens = numbers.filter(n => n % 2 === 0)
// reduce
const sum = numbers.reduce((acc, n) => acc + n, 0)
// forEach (side effects, returns undefined)
numbers.forEach(n => console.log(n))
// find
const firstEven = numbers.find(n => n % 2 === 0) // 2
// some / every
numbers.some(n => n > 4) // true
numbers.every(n => n > 0) // true
Functions Returning Functions
function createMultiplier(factor) {
return n => n * factor
}
const double = createMultiplier(2)
const triple = createMultiplier(3)
[1, 2, 3].map(double) // [2, 4, 6]
[1, 2, 3].map(triple) // [3, 6, 9]