Front end: Closure - lottekoblens/matching-application GitHub Wiki

Closure

Wat is closure?

Closure is als het ware een combinatie van een functie die is gebundeld, samen met verwijzingen naar de omringende state. Oftewel, een closure geeft je toegang tot de scope van een outer function vanuit een inner function. Om een closure te gebruiken moet je een functie in een andere functie definiëren en deze functie moet je dan returnen of doorgeven aan een andere functie. De inner function heeft dan toegang tot de variabelen van de outer function, ook nadat de outer function al is gereturnt.

In JavaScript zijn closures het belangrijkste mechanisme dat men gebruikt om gegevensprivacy mogelijk te maken. Wanneer je namelijk closures gebruikt dan zitten ingesloten variabelen alleen binnen de scope van de (outer) function. Hierdoor kunnen de gegevens niet van buitenaf verkregen worden. Voorbeeld:

function outer() {
   var b = 10;
   function inner() {
        
         var a = 20; 
         console.log(a+b);
    }
   return inner;
}

In deze functie is var b in de outer function, var a zit dan in de inner function. Maar zoals te zien is in het voorbeeld heeft de inner functie wel toegang tot var b die zich in de outer function bevindt.

Hierbij geldt het volgende: wanneer de functies zijn uitgevoerd bestaan de variabelen als het ware niet meer, omdat ze alleen in de functie toegankelijk zijn en de functie dus als het ware voltooid is. Var b en var a zijn dan dus niet meer toegankelijk.

Bronnen: