Ответ 1
{ }
перегружены в синтаксисе JavaScript. Они используются как для блоков (операторов), так и для литералов объектов. Правило таково: если {
появляется в начале оператора, он анализируется как блок; в противном случае это объектный литерал.
В {}.key
{
появляется в начале оператора. Разбирает как
{
// this is an empty block
}
.key // syntax error here
Добавление любого токена перед {
(например, (
) делает его анализируемым как литерал объекта. Например, 42, {}.key = 0
также будет работать.