Ваша ошибка в том, что {
в начале оператора читается как блок кода (как тип, который вы используете в if
s и for
s), а не как литерал объекта.Вы можете поставить круглые скобки, чтобы eval сделал то, что вы хотите:
eval('(' + str + ')');
Конечно, eval - это зло, и вы должны использовать что-то вроде JSON.parse
.У большинства новых браузеров это есть, и это не только безопаснее, но и быстрее.