
Je declareert functies in JavaScript op twee manieren: als functie-expressie of als functiedeclaratie. De eerste sla je op in een variabele, de tweede hergebruik je overal in je code. Waarschijnlijk ben je vooral functiedeclaraties gewend, dat gold voor mij ook, maar het is de moeite waard om te weten dat het ook anders kan.
Dit artikel kan van tijd tot tijd worden bijgewerkt
Functiedeclaratie
Anders dan bij een functie-expressie kun je een functie die je met een functiedeclaratie maakt al aanroepen voordat ze gedeclareerd is: de interpreter zoekt eerst de variabelen en de functiedeclaraties op en loopt daarna pas de rest van je script door. Is een functie eenmaal gedeclareerd, dan roep je haar verderop in je code aan, maar om dat te kunnen doen moet je haar wel een naam geven.
function addition(a, b) {
return a + b;
};
var calcul= addition(2, 5) ;Functie-expressie
Een functie-expressie is een functie die je aanmaakt, opslaat en behandelt als een variabele. Meestal hebben functie-expressies geen naam, daarom heten ze anonieme functies. De functie staat in een variabele en je roept haar aan zoals elke andere functie. Let wel op: de functie wordt pas verwerkt zodra de interpreter van je browser de declaratie leest. Je kunt haar dus niet aanroepen voordat de interpreter haar gelezen heeft, en alle code die daarvóór staat kan veranderen wat er binnenin gebeurt.
var addition = function(a, b) {
return a + b;
};
var calcul = addition(2, 5) ;Immediately-Invoked Function Expression
Meestal een IIFE genoemd: elke variabele die je binnen deze anonieme functie declareert, blijft afgeschermd van variabelen uit andere scripts die toevallig dezelfde naam dragen. Dat komt door de scope van variabelen. Hier een voorbeeld van een IIFE.
var addition = (function(){
var a = 10;
var b = 20;
return a + b;
}());- De haakjes om onze functie heen zorgen ervoor dat ze als expressie wordt behandeld.
- De twee haakjes aan het eind,
(), vertellen de interpreter dat hij onze functie meteen moet uitvoeren.
Je zet dit meestal in zodra je aan een nieuw script begint, om al je code afgeschermd te houden.
Wanneer gebruik je anonieme functie-expressies?
Ze zijn bedoeld voor code die maar één keer hoeft te draaien, in plaats van steeds opnieuw te worden aangeroepen door andere delen van het script. Een anonieme functie-expressie gebruik je:
- om conflicten te vermijden tussen twee scripts die dezelfde variabelenamen gebruiken als het jouwe,
- als argument bij het aanroepen van een functie, om de waarde van die functie te berekenen.
- om een taak uit te voeren zodra een event optreedt,
- om de waarde van een property aan een object toe te kennen.
···


