Funksjoner av høyere orden
En funksjon av en høyere orden, er en funksjon som enten:
- Tar imot en funksjon som et argument
- Returnerer en funksjon
Litt teknisk babbel, men den første av disse har vi faktisk skrevet tidligere, nemlig:
document.addEventListener('click', ourAmazingFunction)
function ourAmazingFunction() {
alert("Thank you for clicking")
}
Siden det andre argumentet er en funksjon, er addEventListener en funksjon av en høyere orden.
For å vise hvordan b) fungerer kan vi skrive følgende kode:
// Eksempel på funksjoner som ikke er av høyere orden
function doubleMe() {
return x * 2
}
document.write(doubleMe(20))
function tripleMe() {
return x * 3
}
function quadraMe() {
Return x * 4
}
// funksjonene over kan bli meget repetativt, som er helt unødvendig.
// La oss heller lage en funksjon som fikser alle linjene over for oss:
// eksempel på funksjon av høyere orden - returnerer en funksjon
function createMultiplier(multiplier) {
return function(x) {
return x * multiplier
}
}
// dette gjør at vi veldig fleksiblet kan lage nye funksjoner:
let doubleMe = createMultiplier(2)
let tripleMe = createMultiplier(2)
let quadraMe = createMultiplier(2)
document.write(doubleMe(10))
document.write(tripleMe(5))
document.write(quadraMe(5))
En nyttig funksjon av høyere orden:
let myColors = ['red', 'orange', 'yellow'];
// alle arrays har tilgang til en drøss med funksjoner, forEach er en av dem:
myColors.forEach(saySomethingNice);
function saySomethingNice(color) {
document.write("The color " + color + " is a great color<br>")
}
Dette er fleksibel kode, som gjør at myColors kan ha så mange eller få elementer man ønsker, men koden fungerer uansett.