Fermer

mars 4, 2024

Fermetures en Javascript | AU NOUVEAU BLOG

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 si outer a fini de s’exécuter, le inner La fonction conserve toujours l’accès aux variables dans la portée lexicale de sa fonction externe (outer), y compris x et a.
  • Quand closureFn est invoqué, il exécute le inner fonction, qui enregistre les valeurs de x et a. La valeur de x est 10 comme prévu, et la valeur de a est toujours accessible grâce à la fermeture, même s’il s’agit de la fonction la plus extérieure outest.

Cas d’utilisation de fermeture

  1. 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 yqui 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