Maison > interface Web > js tutoriel > Fermetures en JavaScript

Fermetures en JavaScript

WBOY
Libérer: 2024-09-12 10:30:02
original
947 Les gens l'ont consulté

Closures in JavaScript

Bonjour,

Dans cet article, apprenons les Fermetures.

Les fermetures sont essentielles en JavaScript car elles permettent à une fonction d'accéder aux variables de sa portée parent, même après la fermeture de cette fonction parent. Ceci est crucial pour les fonctions qui doivent mémoriser des données au fil du temps, comme dans les fonctions de rappel ou le maintien de l'état. Un point à retenir ici est que les variables inutilisées de la portée parent sont récupérées.

Définition :
Une fermeture est la combinaison d'une fonction regroupée (enfermée) avec des références à son état environnant (l'environnement lexical). En d’autres termes, une fermeture donne à une fonction accès à sa portée externe. En JavaScript, des fermetures sont créées à chaque fois qu'une fonction est créée, au moment de la création de la fonction.

En gros les fermetures ont accès à :

  • Leur propre portée
  • La portée des fonctions externes
  • La portée mondiale

Points bonus
Portée lexicale : les fonctions internes ont accès aux variables dans la portée externe.

Comprenons avec un exemple.

Exemple

Q> Écrivez une fonction createCounter. Il doit accepter un initial entier init. Il devrait renvoyer un objet avec trois fonctions.

Les trois fonctions sont :

increment() augmente la valeur actuelle de 1 puis la renvoie.
decrement() réduit la valeur actuelle de 1 puis la renvoie.
reset() définit la valeur actuelle sur init puis la renvoie.

Voir le code commenté ci-dessous pour un exemple de cas init = 5.

Solution

var createCounter = function(init) {
    const INITIAL_VALUE = init;
    return {
        increment: () => ++init,
        decrement: () => --init,
        reset: () => init=INITIAL_VALUE,
    }
};

/**
 * const counter = createCounter(5)
 * counter.increment(); // 6
 * counter.reset(); // 5
 * counter.decrement(); // 4
 */
Copier après la connexion

Explication :

  • Capturer la variable init dans sa portée lexicale.
  • Renvoi de méthodes qui peuvent accéder et modifier init même après la fin de l'exécution de createCounter.
  • Création d'un état privé et persistant (init) accessible uniquement via les méthodes renvoyées.
  • Permet la création de plusieurs compteurs indépendants, chacun avec son propre état encapsulé.

Si vous avez des doutes ou des suggestions, n'hésitez pas à ajouter des commentaires.

Cette question est tirée de leetcode. Lien

Enfin, gardez à l'esprit que les variables déclarées globalement seront accessibles à chaque fermeture d'un script.

J'espère que vous avez maintenant une bonne compréhension des fermetures. Merci d'avoir lu

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal