Si intento ejecutar una secuencia de comandos cuya línea de base sólo es un objeto:¿Por qué una función anónima en sí misma es un error de sintaxis en javascript?
{prop:'value'}
se analiza bien (tanto en V8 y UglifyJS). De forma similar, puedo poner una cadena o un número en sí mismo como código fuente y no hay ningún error de sintaxis reportado.
Sin embargo, tanto V8 y UglifyJS se quejan de esto por sí solo:
function(){}
me sale Uncaught SyntaxError: Unexpected token (
.
¿Por qué se rompe esto cuando el objeto en el primer ejemplo está bien? ¿Las funciones no son solo objetos en javascript?
Soy consciente de que declarar una función anónima sin ejecutarla no hará nada; esa no es la pregunta. Quiero saber por qué causa un error de análisis.
Bueno, le falta un nombre de función ya que declarar una función sigue la regla 'function [name]() {[code]}' así que la pregunta real podría ser: ¿Por qué hay circunstancias especiales donde puede crear una función anónima? – yoshi
Una "función anónima" es más correctamente una expresión de función sin el nombre opcional (ver [FunctionExpression] (http://ecma-international.org/ecma-262/5.1/#sec-A.5)). – RobG
lo que es interesante solo agrega un operador y esto funciona :) '! Function() {}; + function() {};' – abuduba