L'area in cui più spesso lo trovo utile è nelle funzioni di callback. Questa notazione può essere utilizzata anche nei casi in cui è necessario includere una variabile in una funzione di callback, ma è necessario che lo stato della variabile non sia influenzato da ciò che accade al di fuori della funzione.
var someVal = 1;
setTimeout((function(one) {
return function() {
alert(one); // alerts a 1 even 10 seconds after someVal++;
}
})(someVal), 10000);
someVal++; // the value in the setTimeout will remain the same as it is locked inside.
In questo contesto, setTimeout accetta una funzione che non accetta argomenti. Quindi la domanda su come passare un valore a quella funzione viene risolta creando una funzione che accetta un argomento che restituisce una funzione che accetta 0 argomenti.
Suggerisco a chiunque voglia saperne di più sulla potenza di questa notazione per giocare con essa nella console JavaScript di Firebug. Una volta avvolto il concetto attorno a questo concetto, inizierai a vedere le aree in cui è possibile utilizzare questo potente concetto.
@delnan: Hai ragione, ma penso che sia solo una di quelle domande che è un po 'difficile da cercare. Anche se scommetto che se una persona cerca * "Qual è la sintassi in javascript" *, troverà alcune risposte. : o) – user113716
@delnan - Penso che potresti trovarti sul sito sbagliato. Questo è Stack Overflow, in cui le persone vengono per chiedere aiuto. Ti sei perso? Forse sei sul sito sbagliato, forse? – jmort253
@delnan, presumo facendo questa domanda è anche l'apprendimento, ma non al livello che ti piace o ritenga appropriato. Ho provato a cercarlo, ma non ho ottenuto la risposta. e per questo, ringrazio @patrick per il tempo dedicato a rispondermi. – Oliver