JavaScript higher-order functions
Examples
Functions that operate on other functions, either by taking them as arguments or by returning them, are called higher-order functions. They allow us to abstract over actions as well as values. There are several types, here are some examples.
Functions that create new functions
function greaterThan(n) {
return (m) => m > n
}
let greaterThan10 = greaterThan(10)
console.log(greaterThan10(11))
Functions that change other functions
function noisy(f) {
return (...args) => {
console.log("calling with", args)
let result = f(...args)
console.log("called with", args, ", returned", result)
return result
}
}
noisy(Math.min)(3, 2, 1)
Functions that provide new types of flow control
function unless(test, then) {
if (!test) then()
}
repeat(3, (n) => {
unless(n % 2 == 1, () => {
console.log(n, "is even")
})
})
ES6
Funciton properties
name
The
name
property contains the function's name:function foo() {} console.log(foo.name) // foo let func1 = function () {} console.log(func1.name) // func1 let func4 func4 = function () {} console.log(func4.name) // func4
Default values
let [func1 = function () {}] = [] console.log(func1.name) // func1 let { f2: func2 = function () {} } = {} console.log(func2.name) // func2 function g(func3 = function () {}) { return func3.name } console.log(g()) // func3