Qual è il termine per una funzione JavaScript anonima che viene chiamata immediatamente?

29

Sto scrivendo una guida di stile JavaScript per il mio team, in modo che possiamo organizzare e contribuire ai nostri documenti più facilmente. Ma ho colpito un piccolo bernoccolo che è dove la mia domanda si applica ...

Che cosa dovrei chiamare una funzione JavaScript anonima che viene chiamata immediatamente. So che potrei semplicemente definirlo una "funzione anonima", ma vorrei sottolineare il fatto che viene chiamato immediatamente.

Ecco un esempio:

var MyVariable = (function(data){
  return "another value"
})("some value"); 

console.log(MyVariable);
// "another value"
    
posta silentBeep 02.08.2015 - 21:57
fonte

1 risposta

39

Hanno già un termine per quello nel mondo Javascript. Si chiamano Function Expressions (IIFE) immediatamente invocato .

Che cos'è

Le funzioni IIFE non hanno un nome. Invece, vengono eseguiti una volta mentre l'interprete li incontra:

var area = function() {
    var width = 3;
    var height = 2;
    return width * height;
}();

Le parentesi finali dopo la parentesi graffa di chiusura del blocco di codice indicano all'interprete di chiamare immediatamente l'espressione della funzione.

Se scrivi una dichiarazione di funzione devi aggiungere operatori di raggruppamento , o parentesi che circondano la funzione, per dire all'interprete di trattare la funzione come un'espressione che può essere immediatamente invocato:

var area;
(function() {
    var width = 3;
    var height = 2;
    area = width * height;
}());

Quando sono utilizzati

Gli IIFE vengono utilizzati per il codice che deve essere eseguito una sola volta all'interno di un'attività, anziché essere chiamato ripetutamente.

  1. Come argomento quando viene chiamata una funzione (per calcolare valori, ecc.)
  2. Per assegnare il valore di una proprietà a un oggetto.
  3. In gestori di eventi e listener.
  4. Per evitare conflitti tra due script che potrebbero utilizzare gli stessi nomi di variabili. Possono essere usati come wrapper per rilasciare il codice in un altro script in cui non sei sicuro se i nomi delle variabili possano essere uguali.
risposta data 02.08.2015 - 22:01
fonte

Leggi altre domande sui tag