Een afsluiting (ook bekend als een “closure”) in JavaScript is een functie die is gedefinieerd in een andere functie (de ouderfunctie), en het heeft toegang tot de variabelen in de ouderfunctie, zijn eigen variabelen, en de globale variabelen.
Afsluitingen worden vaak gebruikt om data-privé te maken. Aangezien JavaScript variabelen die gedefinieerd zijn buiten een functie maar in dezelfde scope kan benaderen, kunnen variabelen op deze manier worden afgeschermd van de rest van het programma, wat onvoorziene wijzigingen voorkomt.
Hier is een simpel voorbeeld van een afsluiting:
```
function ouderFunctie() {
var ouderVariabele = “Ik ben de ouder variabele”;
var nieuweFunctie = ouderFunctie();
nieuweFunctie(); // Outputs: “Ik ben de ouder variabele“
```
In dit voorbeeld kan `kindFunctie` nog steeds toegang krijgen tot `ouderVariabele`, zelfs nadat `ouderFunctie` is afgelopen en `kindFunctie` is geretourneerd en toegewezen aan `nieuweFunctie`. Dit komt omdat `kindFunctie` een afsluiting is die zijn omgevingscontext — of “closure” — bewaart.