Ci sono alcune cose che puoi fare con un'espressione di funzione che non puoi con una dichiarazione.
potrebbe essere immediatamente richiamato, e il valore di ritorno memorizzato se non sei nel namespace globale nella variabile
, si potrebbe escludere la parola chiave var
per creare un globale
EDIT:
Ecco un esempio di una chiamata immediata. Restituisce una funzione alla variabile myFunctionName
che ha accesso alle variabili e al parametro con scope nella funzione immediatamente richiamata.
var myFunctionName = function(v) {
// do something with "v" and some scoped variables
// return a function that has access to the scoped variables
return function() {
// this function does something with the scoped variables
};
}('someVal');
// now this function is the only one that has access
// to the variables that were scoped in the outer expression.
myFunctionName();
Ecco un esempio in cui una funzione mantiene un valore numerico. Puoi chiamare ripetutamente la funzione, dandole un numero da aggiungere al conteggio. Farà sempre riferimento al valore corrente, quindi ogni chiamata è cumulativa.
Esempio:http://jsfiddle.net/5uuLa/1/
var counter = function(value) {
return function(addValue) {
value += ~~addValue;
return value;
};
}(10); // initialize with a value
// each call builds on the result of the previous
console.log(counter(2)); // 12
console.log(counter(5)); // 17
console.log(counter(3)); // 20
console.log(counter(7)); // 27
console.log(counter(1)); // 28
leggere l'articolo dalla prima risposta - http://stackoverflow.com/questions/1013385/what-is-the-difference-between- a-function-expression-vs-declaration-in-javascript Link diretto all'articolo - http://kangax.gitub.com/nfe/ – leebriggs