Почему Firefox выдает ошибку для литерала {"a": 1}, а Chrome принимает ее? - PullRequest
0 голосов
/ 16 июня 2019

В консоли Firefox выдается ошибка из-за двоеточия:

{"a": 1}

SyntaxError: unexpected token: ':'

В консоли Chrome это принимает:

{"a": 1}
{a: 1}

Я знаю, что оба принимают {a: 1}, я хотел бы знать, почему Firefox душит версию строкового ключа.

1 Ответ

3 голосов
/ 16 июня 2019

См.

Почему {} + {} больше не NaN в консоли Chrome?

Chrome devtools теперь автоматически переносит все, что начинается с { и заканчивается } в неявной паре скобок ( см. Код ), чтобы принудительно вычислять его как выражение.

Firefox не делает этого. В Firefox,

{a: 1}

оценивается как блок с меткой , равной a, с неиспользованным выражением 1:

{
  a:
  1
}

(вот почему в FF вы видите, что окончательное вычисленное выражение равно 1:

enter image description here

)

Но метки не могут быть заключены в разделители строк (метки должны иметь только простой идентификатор , как и переменная), поэтому изменение a: на "a": приводит к ошибке, потому что двоеточия могут анализируется только после метки или между парой ключ-значение в объекте.

...