J'ai essayé ce simple code JavaScript:
eval('{"Topics":["toto","tata","titi"]}')
Dans la console Chromée, par exemple, cela renvoie
SyntaxError: Unexpected token :
J'ai essayé le JSON sur JSONLint et c'est valable.
Voyez-vous le bug?
OriginalL'auteur Tuizi | 2011-11-02
FWIW, utilisez
JSON.parse
à la place. Plus sûr queeval
.OriginalL'auteur Jonathan M
Vous avez à écrire comme cela
pour convertir une chaîne de caractères de l'Objet
Espère que je l'aide!
thx, c'est beaucoup mieux que accepté de répondre. Il est bon de souligner que la fonction eval est le mal :), mais encore, ce qui répond à la question.
Excelent! Bingo!
J'ai eu le même problème de l'évaluation d'une normale de la fonction javascript et cela a résolu mon problème. Pourquoi / comment enveloppant une expression entre parenthèses résoudre le problème?
OriginalL'auteur Martin Varta
Parce que
eval
ne pas force un contexte d'expression et de la chaîne fournie est une invalide programme JavaScript, donc la première des trois jetons (et comment ils sont regardés) sont:Heureux de codage.
Pour la même raison que ci-dessus 🙂 Le contenu de
eval
exécuter dans un contexte et donc il est pris comme une FunctionDeclaration grammaire de construire. L'erreur générée par qui est "SyntaxError: instruction de fonction requiert un nom". Soit lui donner un nom (eval('function f(){}'); f()
) ou de force dans un FunctionExpression construire (f = eval('(function(){alert("hi")})'); f()
). Voir es5.github.com/x13.htmlmerci! la partie la plus délicate pour moi, c'est que des chaînes de caractères comme '3' sont correctement évaluées, et non pas " fonction(){}'. La seconde ne peut pas être évalué comme une ExpressionStatement:
an ExpressionStatement cannot start with the function keyword because that might make it ambiguous with a FunctionDeclaration
(es5.github.com/x12.html#x12.4)OriginalL'auteur
Numéro un: Ne pas utiliser la fonction eval.
Numéro deux. Seulement utiliser la fonction eval pour faire quelque chose, bien être évalués. Comme par exemple:
OriginalL'auteur Neal
Parce que c'est l'évaluation d'un objet. eval() vous oblige à passer dans la syntaxe du javascript valide, et tout ce que vous faites est en passant un simple objet. L'appel devrait être plus comme:
OriginalL'auteur Marc B
UTILISATION:
a voté pour plus de simplicité
OriginalL'auteur Pica Mio
si vous utilisez JQuery utiliser la fonction
$.parseJSON()
, a travaillé pour moi, a eu le même problèmeOriginalL'auteur Mark E