2013-03-01 9 views
5

Mi sono imbattuto in questo blocco di codice e non vedo davvero la necessità di restituire una funzione quando la funzione esterna non accetta argomenti?Quale valore aggiunge questa funzione JavaScript factory?

var percent = (function() { 
    var fmt = d3.format(".2f"); 
    return function(n) { return fmt(n) + "%"; }; 
})() 

Mi manca qualcosa o può essere riscritto come:

var percent = function(n) { 
    return d3.format(".2f")(n) + "%"; 
} 

risposta

5

Si può, ma poi si sta chiamando d3.format(".2f") ogni volta invece di una sola volta. A seconda di cosa sta facendo la funzione e della frequenza con cui viene chiamata, questo potrebbe aggiungere un ulteriore sovraccarico alle prestazioni.

Con l'IIEF (immediatamente invocato funzione espressione) restituendo la chiusura, si è "caching" fmt per tutti i futuri utilizzi di percent.

+0

Ah, è il caching. Grazie. – dani

Problemi correlati