Aller au contenu principal
ShadowAcademy

Les langages JavaScript Les fonctions

Portée et fermetures

La portée

Une variable déclarée dans un bloc { ... } n'existe que dans ce bloc :

if (true) {
    const message = "dedans";
}
console.log(message);   // ReferenceError : message n'existe pas ici

Une fonction voit les variables déclarées autour d'elle ; l'inverse est faux.

La fermeture

Une fonction créée dans une autre garde l'accès aux variables de celle-ci, même après la fin de son exécution :

function creerSalutation(formule) {
    return (prenom) => `${formule}, ${prenom} !`;
}

const bonjour = creerSalutation("Bonjour");
bonjour("Sam");   // "Bonjour, Sam !"

formule survit dans la fonction renvoyée. C'est une fermeture (closure) : le moyen le plus simple de garder un état privé, que le reste du programme ne peut ni lire ni abîmer.

Chaque appel de creerSalutation crée une nouvelle fermeture, avec sa propre formule.

1 exercice pour cette lecon

Les exercices demandent un compte : il faut bien enregistrer votre progression quelque part. La lecture, elle, reste libre. Creer un compte

  • Un compteur privé moyen lecon a valider