Fermetures en JavaScript
Étudions maintenant le concept de fermeture (closure). En réalité, vous êtes déjà familier avec ce concept, il ne reste plus qu'à apprendre la terminologie correcte.
Ainsi, une fermeture est une fonction ainsi que toutes les variables externes qui lui sont accessibles. Ou, en d'autres termes, une fermeture est une fonction avec son environnement lexical.
En JavaScript, le plus souvent, en disant "fermeture d'une fonction", on ne fait pas référence à la fonction elle-même, mais précisément à ses variables externes. Si une fonction obtient une variable de son environnement lexical, on dit "la variable est tirée de la fermeture".
Rappelons le code que nous avons fait dans la leçon précédente :
function test() {
let num = 1;
return function() {
console.log(num);
}
}
let func = test();
func(); // affichera 1
Dans ce cas, on peut dire que la fonction
func obtient la valeur de la variable
num à partir de la fermeture. On peut aussi dire
que la fonction func stocke la valeur de la variable
num dans la fermeture.