En JavaScript, une “fermeture” ou “closure” est une fonction qui a accès à son propre scope, au scope de la fonction externe et aux variables globales. De plus, une closure a accès à trois scopes :
1. Variables locales – définies entre ses accolades
2. Variables de la fonction externe – la fonction qui entoure la closure
3. Variables globales – définies hors de toutes les fonctions
Voici un exemple simple d’une closure :
```
function externe(x) {
function interne(y) {
return x + y;
}
return interne;
}
var nouvelleFonction = externe(3);
console.log(nouvelleFonction(5)); // affiche 8
```
Dans cet exemple, `nouvelleFonction` est une closure qui est créée lorsque nous appelons `externe(3)`. La fonction `interne`, qui est renvoyée, a accès à la variable `x` de la fonction externe, même après que celle-ci ait terminé son exécution.