Показать сообщение отдельно
  #1 (permalink)  
Старый 25.02.2013, 13:29
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Чем отличается составной оператор от литерала объекта?
1. В JavaScript перед любым оператором можно поставить метку. Использовать метки можно в командах break и continue, да и то не всегда, но поставить метку можно где угодно. Кроме того, любую последовательность операторов можно взять в фигурные скобки (в т.ч. "последовательность" из одного оператора). Пусть есть переменная i с числовым значением. Тогда такая конструкция:
{ a:++i }
является составным оператором, внутри которого стоит метка и один оператор. Вроде все ОК.
2. В JavaScript есть литералы объектов. Литерал объекта - перечисление в фигурных скобках пар ключ:значение, причем часто ключ заключать в кавычки не обязательно, а значением может быть не только непосредственное значение, но и любое выражение, т.е.
{ a:++i }
является литералом объекта.
И вопрос - как понять, где составной оператор с метками, а где - литерал объекта? Про то, что "так писать не надо", "это плохой стиль", "вопрос не имеет практического значения" и т.д. сам знаю, интересует не это, а формальный признак, по которому интерпретатор отличает одно от другого.
Ответить с цитированием