Непонятное(для меня) поведение eval
Вот этот код почему-то выводит "number", а не "object".
alert ( typeof eval ( '{abc : 10}' ) ); А вот этот код вообще не отрабатывает, пишет ошибка "SyntaxError: missing ; before statement typeof eval" alert ( typeof eval ( '{abc : 10, bba : 20}' ) ); Почему такое поведение? В документацие скзаано "Метод eval возвращает значение последнего вычисленного выражения.". В данном случае последним вычесленным выражением должен быть объект {abc : 10, bba : 20} Что я не так понимаю? Спасибо. |
Такая конструкция воспринимается интерпретатором, как блок кода с меткой:
{ 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})')) |
Часовой пояс GMT +3, время: 18:41. |