2011-01-31 9 views
5

Duplicar posible:
JavaScript: var functionName = function() {} vs function functionName() {}¿Cuál es la diferencia entre estas dos declaraciones de función en JavaScript?

En JavaScript podemos decir:

function a() {}; 

O podríamos decir

var a = function() {}; 

Ca ¿Alguien me explica cómo difieren exactamente estos, cuál, si es que hay alguno, es más preferible y bajo qué circunstancias uno usaría cada uno?

Cualquier enlace o lectura externa también sería muy apreciada.

+0

Por lo que yo sé no hay diferencia , excepto que solo la última forma se puede usar en objetos. – pimvdb

+1

@pimvdb hay una [diferencia] bastante grande (http://bonsaiden.github.com/JavaScript-Garden/#functions). – Raynos

Respuesta

0

uno es una declaración de función, el otro es un objeto que declara una función. Esta es la base de prácticamente todos los tutoriales orientados a objetos de JavaScript.

+0

no es cada función también un objeto en js? – Simon

+0

@Simon sí. (casi) todo es un objeto – Raynos

2

Primera

function a() {}; 

Esto puede ser FunctionDeclaration o FunctionExpression. Solo podemos saber si es una FunctionDeclaration o FunctionExpression, según el contexto en el que aparece.

ejemplo # 1)

0,function a() {} //FunctionExpression 

ejemplo # 2)

(function a() {}()); //FunctionExpression 

ejemplo # 3)

var b = function a() {}; //FunctionExpression 

ejemplo # 4)

foo(function a(){}); //FunctionExpression 

Segunda

var a = function() {}; 

Esto es claramente un FunctionExpression por dos razones.

1) El lado derecho de una función anónima

enlaces útiles asignación

2):

http://sweatte.wordpress.com/syntax/javascript-idioms-and-gotchas/

http://www.ecma-international.org/publications/standards/Ecma-262.htm

Cuestiones relacionadas