Javascript.RU

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

Чем отличается составной оператор от литерала объекта?
1. В JavaScript перед любым оператором можно поставить метку. Использовать метки можно в командах break и continue, да и то не всегда, но поставить метку можно где угодно. Кроме того, любую последовательность операторов можно взять в фигурные скобки (в т.ч. "последовательность" из одного оператора). Пусть есть переменная i с числовым значением. Тогда такая конструкция:
{ a:++i }
является составным оператором, внутри которого стоит метка и один оператор. Вроде все ОК.
2. В JavaScript есть литералы объектов. Литерал объекта - перечисление в фигурных скобках пар ключ:значение, причем часто ключ заключать в кавычки не обязательно, а значением может быть не только непосредственное значение, но и любое выражение, т.е.
{ a:++i }
является литералом объекта.
И вопрос - как понять, где составной оператор с метками, а где - литерал объекта? Про то, что "так писать не надо", "это плохой стиль", "вопрос не имеет практического значения" и т.д. сам знаю, интересует не это, а формальный признак, по которому интерпретатор отличает одно от другого.
Ответить с цитированием
  #2 (permalink)  
Старый 25.02.2013, 13:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от rgl
И вопрос - как понять, где составной оператор с метками, а где - литерал объекта?
По-мне так понятно из определения объекта...
http://javascript.ru/Object
Ответить с цитированием
  #3 (permalink)  
Старый 25.02.2013, 17:10
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от rgl
интересует не это, а формальный признак, по которому интерпретатор отличает одно от другого.
интерпретатор анализирует код и
Сообщение от rgl
отличает одно от другого
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #4 (permalink)  
Старый 26.02.2013, 10:20
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 337

nerv_, вспомнил старую детскую загадку.
Вопрос: как запихать бегемота в холодильник
Ответ: открыть дверцу холодильника, запихать бегемота в холодильник, закрыть дверцу холодильника.

Нет, ну меня прикалывают люди, которые не зная ответа на вопрос, все равно пишут абы что. Я привел конкретную конструкцию, которая по правилам языка может трактоваться и как литерал объекта, и как оператор с меткой перед ним. Ну и по какой конкретно скобочке, двоеточию, или еще какому значку интерпретатор решит что ему делать, создавать объект или нет? Увы, ответить никто не смог...
Ответить с цитированием
  #5 (permalink)  
Старый 26.02.2013, 10:37
Аватар для megaupload
Профессор
Отправить личное сообщение для megaupload Посмотреть профиль Найти все сообщения от megaupload
 
Регистрация: 18.01.2013
Сообщений: 1,098

Сообщение от rgl
В JavaScript перед любым оператором можно поставить метку.
дальше не читал
Ответить с цитированием
  #6 (permalink)  
Старый 26.02.2013, 10:55
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 337

Сообщение от megaupload Посмотреть сообщение
дальше не читал
Еще один, с гордостью выставляющий напоказ свое невежество...

Сообщение от Дэвид Флэнаган
Любая инструкция может быть помечена указанным перед ней именем идентификатора и двоеточием:
идентификатор: инструкция
Здесь идентификатор может быть любым допустимым в JavaScript идентификатором, не являющимся зарезервированным словом.
Ответить с цитированием
  #7 (permalink)  
Старый 26.02.2013, 11:28
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от rgl
Ну и по какой конкретно скобочке, двоеточию, или еще какому значку интерпретатор решит что ему делать, создавать объект или нет?
Это либо знак равенства... Либо использование в качестве аргумента/параметра...

rgl, пока своё невежество показываешь только ты, обзывая оппонентов...
Ответить с цитированием
  #8 (permalink)  
Старый 26.02.2013, 12:32
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 337

Сообщение от ksa Посмотреть сообщение
Это либо знак равенства... Либо использование в качестве аргумента/параметра...
В общем это так, но это не то, что я спрашивал, ответом на мой вопрос была бы ссылка на авторитетный источник или цитата из такого источника. Впрочем, уже не нужно, сам нашел, это пункт 12.4 стандарта.

Сообщение от ksa Посмотреть сообщение
rgl, пока своё невежество показываешь только ты, обзывая оппонентов...
К сведению, обзывание оппонентов невежеством не является, у этого слова другой смысл. Обзывание можно назвать нетактичностью, грубостью, хамством - в зависимости от степени эмоциональной окраски, которую хотите придать. Невежество тут не при чем.
Что же касается данного конкретного случая, то первым я не обзывал, а ответил на скрытое оскорбление "дальше не читал", причем по сути я был прав (каким бы грубым мое высказывание вам не казалось) - оппонент не знал что метка может стоять перед любчм оператором. Ссылаться в инструкции break или continue можно не на любую метку, а только на ту, что стоит в "правильном" месте, но ставить такие метки, на которые нельзя сослаться, стандарт языка не запрещает.
Ответить с цитированием
  #9 (permalink)  
Старый 26.02.2013, 13:07
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от rgl
ответил на скрытое оскорбление "дальше не читал"
Ну если это оскорбление...

Сообщение от rgl
причем по сути я был прав
Вона чё...

Последний раз редактировалось ksa, 26.02.2013 в 15:19.
Ответить с цитированием
  #10 (permalink)  
Старый 26.02.2013, 13:36
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от rgl
Ну и по какой конкретно скобочке, двоеточию, или еще какому значку интерпретатор решит что ему делать, создавать объект или нет?
по контексту

my: {
    la: {
        alert( 1 );
    }
}


Сообщение от rgl
Я привел конкретную конструкцию, которая по правилам языка может трактоваться и как литерал объекта, и как оператор с меткой перед ним
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 26.02.2013 в 13:46.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чем отличается undefined от null hrundel Общие вопросы Javascript 21 01.01.2011 22:06