Nessuno dei due è deprecato ed entrambi funzioneranno. La differenza qui è che uno è una funzione con nome (function f()
) mentre l'altra è una variabile uguale a una funzione (var f = function()
).
È necessario fare attenzione quando si impostano le variabili uguali alle funzioni. Ciò funzionerà:
var f = function(n) { console.log(n); };
f(3); // logs 3
Ma questo si romperà, dal momento che la variabile è definita dopo la chiamata ad esso.
f(3); // what is f? breaks.
var f = function(n) { console.log(n); };
Ma le normali funzioni funzionano correttamente.
function abc(n) { console.log(n); }
abc(3); // logs 3
xyz(5); // logs 5
function xyz(n) { console.log(n); }
Ciò è perché il codice viene analizzato prima dell'esecuzione, e tutte le funzioni sono disponibili da chiamare. Ma impostare una var uguale a una funzione è come impostare var per qualcos'altro. L'ordine di quando accade è importante.
Ora, per alcune cose più confuso ...
ci sono anche funzioni anonime 'self-executing'. Vanno con una varietà di nomi. Il modo più comune per farlo è qualcosa del genere:
(function() {
// code in here will execute right away
// since the() at the end executes this (function(){})
})();
Esiste anche una versione probabilmente migliore.
!function() {
// again, the tailing() will execute this
}();
Scopri this Stack Overflow post per ulteriori informazioni sulle funzioni anonime.
Ecco una risposta alla tua domanda: http://stackoverflow.com/a/1013387/236135 ed ecco la domanda che è stata posta con i termini appropriati http://stackoverflow.com/questions/1013385/che cosa-è-la -differenza-tra-a-funzione-espressione-vs-dichiarazione-in-javascrip –