En JavaScript, les accolades sont utilisées pour créer des blocs d'instructions:
{
var foo = "bar";
var blah = "baz";
doSomething();
}
Les lignes ci-dessus peut être mis à l'intérieur d'une chaîne et d' eval
zanne, sise sans problème. Maintenant, considérez ceci:
{
"foo": "bar",
"blah": "baz"
}
Les accolades cause le moteur JavaScript pense que c'est un groupe d'expression, d'où l'erreur de syntaxe autour de l' :
de caractère. Citation de MDN...JavaScript Guide...Littéraux d'Objet:
Vous ne devriez pas utiliser un objet littéral au début d'un énoncé.
Cela conduira à une erreur ou ne pas se comporter comme prévu, parce que le {
sera interprété comme le début d'un bloc.
La solution d'emballage de l'objet littéral à l'intérieur d' ()
travaux en racontant le moteur pour traiter son contenu comme une expression, non pas comme un bloc de déclaration. Donc cela ne fonctionne pas:
({
var foo = "bar";
var blah = "baz";
doSomething(evil);
})
// parse error
Mais ce n':
({
"foo": "bar",
"blah": "baz"
})
// returns object