2015-04-15 7 views
0

I'm вида запутались, почему я могу назначить буквальный следующий объект:Почему этот объект буквально вызывает синтаксическую ошибку?

var x = { "a" : true }; 

При изменении его к простому утверждению:

{ "a" : true }; 

Вызовет SyntaxError: Unexpected token : в Firefox и Chrome (это работает как ожидается в узле).

+0

JS поддерживает фигурные скобки, поэтому один синтаксис неоднозначен. обратите внимание, что фигурные скобки ничего не делают (пока), но они официально законны даже в ES3. – dandavis

+0

Он анализируется как блок. Это дубликат, но я слишком устал, чтобы найти его прямо сейчас. – Scimonster

+0

также, это также синтаксическая ошибка в узле, вы должны были попробовать на repl, но в файле он будет бросать. – dandavis

ответ

1

JavaScript object literals syntax error

Вот аналогичный ответ (если вы использовали REPL). В основном узел будет обертывать код в круглых скобках, таким образом, синтаксически анализируя его как литерал объекта.

{"hello":1} to be ({"hello":1}) 
+1

нет, это не является законным даже для node.js ... сохранить файл с помощью только '{" a ": true}' как test.js , запустите 'node test.js' и посмотрите, не является ли это ошибкой (это так) – dandavis

+1

Это неправильно, узел хочет обернуть его в круглые скобки, но REPL обернет весь код в круглые скобки, так что там он не будет бросать, но не потому, что это внезапно действительный JS. – adeneo

+0

Право; это REPL, но я думаю, что именно здесь и имел в виду ответчик. (Быть щедрым.) – Pointy

Смежные вопросы