Probé este simple código JavaScript:Eval() = símbolo inesperado: Error
eval('{"Topics":["toto","tata","titi"]}')
En la consola de Chrome, por ejemplo, este devuelve
SyntaxError: Unexpected token :
probé el JSON en JSONLint y es válido.
¿Ves el error?
puedo preguntarle por qué eval ('function() {}') emite una excepción también? – BiAiB
@BiAiB Por la misma razón que la anterior :) El contenido de 'eval' se ejecuta en un contexto * statement * y, por lo tanto, se toma como una construcción gramatical FunctionDeclaration. El error generado por eso es "SyntaxError: declaración de función requiere un nombre". O le da un nombre ('eval ('función f() {}'); f()' o lo fuerza a un constructo FunctionExpression ('f = eval ('(function() {alert (" hi ")}) '); f() '). ¡Vea http://es5.github.com/x13.html –
gracias! la parte más difícil para mí fue porque cadenas como '3' se evalúan correctamente y no 'función() {}'. El segundo no se puede evaluar como un ExpressionStatement: 'un ExpressionStatement no puede comenzar con la palabra clave de la función porque eso podría hacer que sea ambiguo con una FunctionDeclaration' (http://es5.github.com/x12.html#x12.4) – BiAiB