Если мы откроем консоль в Firefox и поставим:
{
test: 'test',
test: 'testtest'
}
Firefox воспримет это как блок кода, в котором может возникнуть ошибка из-за неожиданного двоеточия. В противоположном Node repl и, например. Chrome интерпретирует это как объявление объекта. Я бы сказал, что это ошибка, но я не знаю, могу ли я сказать, что интерпретировать это как блок кода как-то правильно? Помещение этих объявлений в другие скобки, т.е. ({...})
, работает без каких-либо проблем, но все же это вводит в заблуждение, поскольку другие среды узнают, что это объявление объекта
{}
, он на самом деле вычислит({})
. Если вы оцените({})
в FF, вы получите тот же результат. - person VLAZ   schedule 04.12.2019(
и)
, что заставит оценивать его как выражение, поэтому{
не будет рассматриваться как начало блока кода. - person VLAZ   schedule 04.12.2019Expected ';'
, поэтому у нас есть 3 разных поведения. - person gman   schedule 04.12.2019