Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.05.2014, 19:10
Кандидат Javascript-наук
Отправить личное сообщение для FanAizu Посмотреть профиль Найти все сообщения от FanAizu
 
Регистрация: 08.03.2011
Сообщений: 148

Непонятное(для меня) поведение 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}
Что я не так понимаю? Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 06.05.2014, 19:43
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Такая конструкция воспринимается интерпретатором, как блок кода с меткой:
{
    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})'))

Последний раз редактировалось Octane, 06.05.2014 в 20:17.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
HELP!!! У меня проблема с соц. сетью Вконтакте, причиною является "JavaScript error" Mixa Общие вопросы Javascript 1 14.07.2012 14:42
Вычисление значения выражения без eval Matre Общие вопросы Javascript 6 19.11.2011 12:04
Странное поведение... popov654 Общие вопросы Javascript 6 29.03.2011 05:14
Простой сценарий определения текущего времени у меня в браузере почему-то не работает WitaliG Общие вопросы Javascript 2 02.08.2010 22:05
Cтранное поведение viktod Общие вопросы Javascript 23 10.04.2010 00:37