Functiedeclaratie vs functie-expressie in JavaScript

Functiedeclaratie vs functie-expressie in JavaScript

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.

javascript
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.

javascript
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.

javascript
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.

···

JavaScript

Damien Flandrin Webdeveloper sinds 2010, maker van Gekkode en Email Impact. Elk artikel wordt vóór publicatie getest op een echt project. Contact
Nieuwsbrief

Nieuwe tests, tutorials en projecten, per e-mail.

Reproduceerbare tests, geversioneerde code, gedateerde resultaten. Nooit spam.