Причина
{ }
- это не объект, как можно подумать, а оператор блока , широко известный в таких случаях, как:
if(true) { } // a block statement
while(true) { } // a block statement
javascript ожидает, что он будет содержать оператор, а не пары ключ-значение.
return
{
alert("works");
}
Но почему компилятор не интерпретирует его как объект?Это потому, что оно не является частью выражения, просто удалите символ новой строки, чтобы оно стало частью возвращаемого выражения:
return { /* object */ }
TLDR: никогда не начинать выражение в новой строке