Comprendre les Closure en JavaScript

En JavaScript, une closure est une fonction qui fait référence à des variables dans la portée externe à partir de sa portée interne. La fermeture préserve la portée externe à l’intérieur de sa portée interne.

Pour comprendre les fermetures, vous devez d’abord savoir comment fonctionne la portée lexicale.

La portée lexicale définit la portée d’une variable par la position de cette variable déclarée dans le code source. Par exemple :

let nom= 'Mario';

function age() { 
    let age= 19';
    console.log( nmom + ' a ' + age);
}

Dans cet exemple :

Le nom de la variable est une variable globale. Elle est accessible de partout, y compris dans la fonction age().
La variable message est une variable locale qui n’est accessible que dans la fonction age().

Si vous essayez d’accéder à la variable message en dehors de la fonction age(), vous obtiendrez une erreur.

Le moteur JavaScript utilise donc la portée pour gérer l’accessibilité des variables.

Selon le scoping lexical, les scopes peuvent être imbriqués et la fonction interne peut accéder aux variables déclarées dans son scope externe. Par exemple :

function age() {
    let age= 20 ;

    function afficherAge() {
        console.log(age);
    }

    afficherAge();
}

age();

La fonction greeting() crée une variable locale nommée message et une fonction nommée sayHi().

La fonction afficherAge() est une fonction interne qui n’est disponible que dans le corps de la fonction age().

La fonction afficherAge() peut accéder aux variables de la fonction externe, comme la variable message de la fonction age().

À l’intérieur de la fonction age(), nous appelons la fonction afficherAge() pour afficher le message.