Closures - YunusEmreCMD/blokTech GitHub Wiki

Een closure is een combinatie van functies gekoppeld aan elkaar, gerefereerd naar de omgeving er omheen. Met andere woorden, een closure geeft je toegang tot een functie in een andere scope. Bij de meeste talen is het bijvoorbeeld niet mogelijk om variables buiten een functie te gebruiken binnen de functie, bij javascript kan dit dus wel met closures.

Een closure kan ik in 3 scopes gedefinieerd worden.

  1. Toegang tot eigen scope binnen curly brackets
  2. Toegang tot variabele uit andere functies
  3. Toegang tot globale variabelen

Wat ook goed is om te weten is dat de variabele in de functie de laatste versie van de variabele aanhoudt, ondanks dat deze uit en na de functie is beschreven.

let myName = ‘Rob’
function printName() {
	console.log(myName)
}
myName = ‘bert’
printName()

Maar dit is niet echt waar closures voor gebruikt worden en bekend om staan. Closures worden zoals ik eerder aangaf vaak gebruikt om andere functies te gebruiken in andere functies.

Alles uit een functie kan gebruikt worden in een functie. Alle functies en variabele hebben als het ware beide toegang tot alles. Zelfs als een functie om een andere functie heen helemaal is uitgevoerd.

Voorbeeld code:

function makeAdder(x) {
  return function(y) {
    return x + y;
  };
}

var add5 = makeAdder(5);
var add10 = makeAdder(10);

console.log(add5(2));  // 7
console.log(add10(2)); // 12

Bronnen

Closures - JavaScript | MDN. (2021, 19 februari). Geraadpleegd op 7 maart 2021, van https://developer.mozilla.org/en-US/docs/Web/JavaScript/Closures

Web Dev Simplified. (2019, 3 december). Learn Closures In 7 Minutes [Videobestand]. Geraadpleegd op 7 maart 2021, van https://www.youtube.com/watch?v=3a0I8ICR1Vg&ab_channel=WebDevSimplified