IIFE en JavaScript: que sont les expressions de fonction immédiatement appelées?

Déclaration de fonction

Une fonction créée avec une déclaration de fonction est un objet Function et possède toutes les propriétés, méthodes et comportements des objets Function. Exemple:

 function statement(item){ console.log('Function statement example '+ item); }

Expression de fonction

Une expression de fonction est similaire à une instruction de fonction, sauf que le nom de la fonction peut être omis pour créer des fonctions anonymes. Exemple:

 var expression = function (item){ console.log('Function expression example '+ item); }

Expressions de fonctions immédiatement appelées

Dès que la fonction est créée, elle ne doit pas être invoquée explicitement. Dans l'exemple ci-dessous, la variable iife stockera une chaîne renvoyée par l'exécution de la fonction.

 var iife = function (){ return 'Immediately Invoked Function Expressions(IIFEs) example '; }(); console.log(iife); // 'Immediately Invoked Function Expressions(IIFEs) example '

La déclaration avant IIFE doit toujours se terminer par un; ou il lancera une erreur.

Mauvais exemple :

var x = 2 //no semicolon, will throw error (function(y){ return x; })(x); //Uncaught TypeError: 2 is not a function

Pourquoi utiliser des expressions de fonctions immédiatement appelées?

 (function(value){ var greet = 'Hello'; console.log(greet+ ' ' + value); })('IIFEs');

Dans l'exemple ci-dessus, lorsque le moteur javascript exécute le code ci-dessus, il crée un contexte d'exécution global lorsqu'il voit du code et crée un objet fonction en mémoire pour IIFE. Et quand il atteint en ligne en 46raison de la fonction invoquée, un nouveau contexte d'exécution est créé à la volée et ainsi la variable de salutation entre dans ce contexte d'exécution de fonction et non dans le global, c'est ce qui la rend unique. This ensures that code inside IIFE does not interfere with other code or be interfered by another codeet donc le code est sûr.

Plus d'information

  • Expression de fonction immédiatement invoquée sur Wikipedia
  • À quoi sert le point-virgule principal des bibliothèques JavaScript?