Ambas definiciones son las expresiones de función, en lugar de funcionar declaraciones o funciones creadas por el Function
constructor. Ambos asignan una función a la variable alertMessage
. La diferencia es que la primera función se nombra, mientras que la segunda es anónima.
funciones con nombre se utilizan generalmente en las declaraciones de funciones, por ejemplo
function alertMessage(message) { ... }
En ese caso, la declaración de la función crea una variable en el ámbito actual llamada alertMessage
que hace referencia a esa función. Las declaraciones de funciones se elevan a la parte superior del alcance actual, de modo que puede llamar a las funciones declaradas antes de que se definan en su archivo js
.
Una función nombrada utilizada en una expresión de función (como la pregunta original) no crea esta variable, ni es elevada al alcance de ejecución, por convención la mayoría de las expresiones de función son anónimas. Los únicos beneficios para nombrar una expresión de función son que la variable name
está obligado dentro de la función (aunque, como se menciona CMS, esto depende de la implementación) y el nombre de la función se emite por el método de la función toString
. Esto puede ser útil durante la depuración (en lugar de tener salida de Firebug (?)
para una enorme lista de llamadas a funciones anónimas).
Mucho más detalle MDC
análisis pertinentes: http://yura.thinkweb2.com/named-function-expressions/ (en particular, consulte la sección "función llamada expresiones") –
Leer esta respuesta te creo encontrará toda la información que necesita: http://stackoverflow.com/questions/336859/javascript-var-functionname-function-vs-function-functionname/338053#338053 –