Le funzioni in JavaScript

IIFE

IIFE, funzioni invocate immediatamente in JavaScript
IIFE, funzioni invocate immediatamente in JavaScript

Il termine IIFE è un acronimo per Immediately Invoked Function Expression indica una funzione immediatamente invocata. Si pronuncia Iffy.

Per essere IIFE una funzione deve essere contenuta tra parentesi e deve essere seguita da un’altra coppia di parentesi.

(function iife() {
   console.log("Mi hanno invocato immediatamente");
}());

Queste funzioni vengono eseguite immediatamente dopo essere state dichiarate.

Il motivo per cui una IIFE deve essere racchiusa tra parentesi è che in questo modo tutto il codice della funzione viene interpretato come una espressione, e in questo modo possiamo eseguire immediatamente la funzione utilizzando le classiche parentesi tonde alla fine.

Se la funzione non fosse interpretata come espressione non potremmo farlo:

/// ERRORE!!!
function iife() {
   console.log("Mi hanno invocato immediatamente");
}();
/// Uncaught SyntaxError: Unexpected token )

In effetti è possibile utilizzare qualsiasi stratagemma per fare in modo che l’interprete JavaScript identifichi il codice della funzione come espressione.

Alcune varianti valide:

/// La funzione definita e richiamata all’interno delle parentesi
(function iife() {
   console.log('Ciao, sono una IIFE');
}());

/// La funzione definita dentro le parentesi e richiamata fuori
(function iife() {
   console.log('Ciao, sono una IIFE');
})();

/// Un operatore unario di negazione
!function iife() {
   console.log('Ciao, sono una IIFE');
}();

/// Un operatore unario positivo
+function iife() {
   console.log('Ciao, sono una IIFE');
}();

Tecnicamente qualsiasi operatore potrebbe andar bene, ma la forma più utilizzata è la prima, con la dichiarazione e l’invocazione all’interno di parentesi tonde.

IIFE con parametri

È possibile passare dei parametri alle funzioni invocate immediatamente, questi parametri possono essere utilizzati all’interno della funzione:

(function iife(nome, eta) {
    console.log("Mi chiamo " + nome + " e ho " + eta + " anni",);
}("Daniele", 42));
/// "Mi chiamo Daniele e ho 42 anni."

Questo costrutto è spesso utilizzato dai più famosi framework JavaScript, ad esempio un plugin di jQuery è tipicamente racchiuso in questo formato:

(function($) {
    /// Qui dentro si può utilizzare $ per jQuery
}(jQuery));

Questo articolo è parte della collana JavaScript: Guida di riferimento per aspiranti web developer.

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.