Ninguno está en desuso, y ambos funcionarán. La diferencia aquí es que una es una función nombrada (function f()
) mientras que la otra es una variable igual a una función (var f = function()
).
Debe tener cuidado al establecer variables iguales a funciones. Esto funcionará:
var f = function(n) { console.log(n); };
f(3); // logs 3
Pero esto va a romper, ya que la variable se define después de la llamada a la misma.
f(3); // what is f? breaks.
var f = function(n) { console.log(n); };
Pero las funciones normales funcionan bien.
function abc(n) { console.log(n); }
abc(3); // logs 3
xyz(5); // logs 5
function xyz(n) { console.log(n); }
Esto se debe a que el código se analiza antes de la ejecución y todas las funciones están disponibles para llamar. Pero establecer una var igual a una función es como establecer una var para cualquier otra cosa. El orden de cuándo sucede es importante.
Ahora para algunas cosas más confuso ...
También hay funciones anónimas 'autoejecutables. Van por una variedad de nombres. La forma más común de hacerlo es algo como esto:
(function() {
// code in here will execute right away
// since the() at the end executes this (function(){})
})();
También hay una mejor versión.
!function() {
// again, the tailing() will execute this
}();
Consulte this Stack Overflow post para obtener más información sobre las funciones anónimas.
Aquí hay una respuesta a su pregunta: http://stackoverflow.com/a/1013387/236135 y esta es la pregunta que se hizo con los términos adecuados http://stackoverflow.com/questions/1013385/what-is-the -difference-between-a-function-expression-vs-declaration-in-javascrip –