Anonieme functions in JavaScript
Een function in JavaScript is een object. Dat betekent dat je het kunt behandelen net zoals elk ander JavaScript-object. Het is dus mogelijk om ze te maken terwijl het JavaScript-programma loopt (at runtime). Zie de volgende voorbeelden:
I.: De gebruikelijke declaratie van een function in JavaScript is:
function reisNaarDeMaan() {
window.alert("Broem! Broem! Broem!");
}
De aanroep is: reisNaarDeMaan()
Dit type declaratie heeft het voordeel dat de function binnen de hele scope van het JavaScript beschikbaar is. Functies die je functies declareert op het hoogste niveau zijn beschikbaar in het hele HTML-document. Functies die je declareert binnen een functie bestaan natuurlijk alleen binnen die functie.
II.: Je kunt hetzelfde bereiken met een anonieme functie, dat is een functie die geen naam heeft. Je kent het functie-object dan toe aan een variabele.
var reisNaarDeMaan = function() {
window.alert("Broem! Broem! Broem!");
}
De aanroep is gelijk aan de aanroep van een functie die 'gewoon' is gedeclareerd: reisNaarDeMaan()
Wat is het nut van anonieme functies?
Voor het dagelijkse gebruik van JavaScript is het antwoord simpel: Dat is er niet. Het is zelfs zo dat anonieme functions lastiger
te debuggen zijn dan functies die wel een naam hebben.
Anonieme functies hebben hun nut voor web-toepassingen die op de server worden gegenereerd en at runtime naar de gebruikers-PC worden gestuurd. Daar kan het leiden tot compactere code, wat de laadtijd korter maakt. Dat is echter hogeschoolprogrammeerwerk dat buiten het bestek van deze website valt.
Ik raad het gebruik van anonieme functions niet aan. Sterker nog, je zou het helemaal niet moeten gebruiken! Beperk je tot de "gewone" functie-declaraties.
Opmerking:
Om het nog een beetje ingewikkelder te maken: In Voorbeeld II kun je ook een naam gebruiken:
var reisNaarDeMaan = function reisNaarDeMaan() {
window.alert("Broem! Broem! Broem!");
}
De aanroep is: reisNaarDeMaan()
Zolang je de naam van de variabele en van de function gelijk houdt, loop je hiermee geen risico. Maar de onderstaande code is tricky:
var reisNaarDeZon = function reisNaarDeMaan() {
window.alert("Broem! Broem! Broem!");
}
De aanroep reisNaarDeMaan()
werkt niet. Je moet reisNaarDeZon()
gebruiken, want dat is naam van de functie!