Такая конструкция воспринимается интерпретатором, как блок кода с меткой:
{
label: 10
}
Скобки служат для группировки, инструкция может отсутствовать:
instruction {
doSomething(); doSomethingElse()
}
Если без
eval
просто в скрипте написать:
{label1: 1, label: 2}
будет таже ошибка
"SyntaxError: missing ; before statement"
.
Чтобы эта конструкция распознавалась как литерал объекта, она должна находиться в
выражении, для этого достаточно обрамить код в скобки:
alert(typeof eval('({abc: 10})'))
alert(typeof eval('({abc: 10, bba: 20})'))