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 à :
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 */
Explication :
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!