Pour les Jedis, JavaScript, épisode II : L’attaque des Closures (partie 2)

Wassim Chegham
Oct 31, 2018 · 7 min read
  1. Pour les Jedis, JavaScript, épisode II : L’attaque des Closures (1 et 2)
  2. Pour les Jedis, JavaScript, épisode III : La revanche des Prototypes (1 et 2)

Fonction de callback et timers

Un autre cas d’usage des Closures, est l’utilisation des fonctions de callback ou des timers. Dans ces deux cas, une fonction sera appelée de manière asynchrone à un moment donné, et dans laquelle nous avons — souvent — besoin d’accéder à des informations se trouvant en dehors. Prenons l’exemple suivant :

Fonction partielle

L’application partielle d’une fonction est une technique très intéressante. Cela consiste à invoquer une fonction qui, une fois exécutée, retourne à son tour une autre fonction, destinée à être exécutée ultérieurement.

IIFE (Immediate Invocation Function Expression)

Les Closures sont également utilisées au sein de nombreux patrons de conception (Design Pattern) très présents en JavaScript. Parmi ces Design Patterns, nous pouvons citer le patron IIFE (Immediate Invocation Function Expression), en français cela donne : les fonctions auto-invoquées. Ce patron est principalement utilisé pour encapsuler des objets ou du comportement dans des modules JavaScript. Les IIFE sont encore assez répandu dans le code des librairies et frameworks écrits en ES5. Les choses ont changé avec l’arrivé de ECMA2015 et les ES Modules.

  1. Exécute la fonction ;
  2. Crée une seconde instance de fonction ;
  3. Exécute cette seconde fonction et retourne le résultat ;
  4. Se débarrasse de cette seconde fonction (car elle n’est référencée nulle part) ;
  5. Retourne le résultat ;
  6. Se débarrasse de la première fonction (car elle n’est référencée nulle part non plus).

Ne déclarez jamais de fonctions dans les boucles, si vous n’avez pas le choix, passez par une IIFE.

Maintenant que je vous ai présenté le problème, parlons de la solution. Vous allez être étonnés d’apprendre que pour résoudre ce problème introduit à la base par une Closure, nous allons avoir besoin d’une autre Closures (plus une IIFE). Comment on le dit, on va combattre le feu par le feu !

Résumé

Dans ce second épisode (partie 1 et 2), nous avons appris et compris comment les Closures — un des concept majeur de la programmation fonctionnelle — sont implémentées en JavaScript. J’espère que grâce à cet épisode vous aurez suffisamment de bagage pour votre quête ultime pour devenir un Jedi en JavaScript.


CodeShake

Learnings and insights from SFEIR community.

Wassim Chegham

Written by

Angular Tooling team ★ GDE for Action On Google, GCP teams at Google ★ Member of Node.js Foundation ★ Follow me @manekinekko

CodeShake

CodeShake

Learnings and insights from SFEIR community.