Fermetures en Javascript | AU NOUVEAU BLOG

Comprendre les fermetures, c’est comme déverrouiller un trésor caché dans le monde du développement JavaScript. Dans ce guide étape par étape, nous approfondirons les subtilités des fermetures, percerons leurs mystères et explorerons les avantages qu’elles apportent à votre code.
Qu’est-ce qu’une fermeture ?
Une fermeture en JavaScript est formée lorsqu’une fonction est définie dans une autre fonction, permettant à la fonction interne d’accéder aux variables de la fonction externe. La fonction interne conserve une référence à la portée de la fonction externe, même une fois l’exécution de la fonction externe terminée.
En termes simples, Function, avec sa portée lexicale, forme une clôture
Dans cette fonction interne est renvoyée, car nous pouvons voir que la fonction externe est exécutée, mais si nous allons exécuter la fonction ClosureFn, qui contient en fait la fonction interne, imprimera X : 10, car elle se souvient de sa portée lexicale, même après l’exécution. de sa fonction parent.
Dans la capture d’écran, nous pouvons voir qu’un objet Closure contient toutes les références de ses variables externes.
Voyons encore un exemple avec deux fonctions internes :
- La magie ici réside dans la fermeture créée par le
inner
fonction. Même siouter
a fini de s’exécuter, leinner
La fonction conserve toujours l’accès aux variables dans la portée lexicale de sa fonction externe (outer
), y comprisx
eta
. - Quand
closureFn
est invoqué, il exécute leinner
fonction, qui enregistre les valeurs dex
eta
. La valeur dex
est10
comme prévu, et la valeur dea
est toujours accessible grâce à la fermeture, même s’il s’agit de la fonction la plus extérieureoutest
.
Cas d’utilisation de fermeture
- Encapsulation des données : les fermetures permettent la création de variables privées. En encapsulant les variables dans le périmètre d’une fonction, elles ne sont pas directement accessibles de l’extérieur, favorisant le masquage des informations et réduisant le risque de modifications involontaires.
2. Fonction curry
Les fermetures jouent un rôle clé dans le currying de fonctions, une technique utilisée en programmation fonctionnelle où une fonction est transformée en une séquence de fonctions, chacune prenant un seul argument. Ceci est réalisé grâce à l’utilisation de fermetures pour capturer et mémoriser les arguments fournis précédemment. Prenons un exemple pour illustrer le concept :
Dans cet exemple, curryAdd
est une fonction de curry qui prend un argument x
et renvoie une fermeture qui prend un autre argument y
qui renvoie à son tour une autre fermeture, prenant l’argument final z
. Lorsque les trois arguments sont fournis, les fermetures sont exécutées et la somme des arguments est renvoyée.
La magie ici réside dans les fermetures préservant les valeurs de x
et y
même après que leurs fonctions respectives ont été pleinement exécutées. Cela permet la création de fonctions partiellement appliquées, permettant une approche plus flexible et modulaire de la composition des fonctions.
Première fermeture : curryAdd(1) // Renvoie une fermeture avec x = 1
Deuxième fermeture : curryAdd(1)(2) // Renvoie une fermeture avec x = 1 et y = 2
Troisième fermeture : curryAdd(1)(2)(3) // Renvoie une fermeture avec x = 1, y = 2 et z = 3, puis calcule la somme (1 + 2 + 3)
Inconvénients des fermetures
Certes, les fermetures sont puissantes, mais nous devrions considérer la gestion de la mémoire. Étant donné que les fermetures conservent les références à leur portée externe, elles peuvent conserver les objets en mémoire plus longtemps que prévu. Cela peut entraîner des fuites de mémoire potentielles s’il n’est pas géré correctement.
Conclusion
Les fermetures en JavaScript offrent un moyen élégant de créer du code encapsulé et réutilisable. Comprendre le fonctionnement des fermetures est essentiel pour maîtriser JavaScript et exploiter tout son potentiel, en particulier dans les scénarios impliquant l’encapsulation de données, le masquage de données, le currying de fonctions, etc. À mesure que nous approfondissons le développement JavaScript, les fermetures deviendront un outil précieux pour écrire des contenus propres, modulaires, et un code efficace.
Consultez nos autres articles de blog pour plus d’informations.
VOUS TROUVEZ CECI UTILE ? PARTAGEZ-LE
Source link