Чем отличается составной оператор от литерала объекта?
1. В JavaScript перед любым оператором можно поставить метку. Использовать метки можно в командах break и continue, да и то не всегда, но поставить метку можно где угодно. Кроме того, любую последовательность операторов можно взять в фигурные скобки (в т.ч. "последовательность" из одного оператора). Пусть есть переменная i с числовым значением. Тогда такая конструкция:
{ a:++i } является составным оператором, внутри которого стоит метка и один оператор. Вроде все ОК. 2. В JavaScript есть литералы объектов. Литерал объекта - перечисление в фигурных скобках пар ключ:значение, причем часто ключ заключать в кавычки не обязательно, а значением может быть не только непосредственное значение, но и любое выражение, т.е. { a:++i } является литералом объекта. И вопрос - как понять, где составной оператор с метками, а где - литерал объекта? Про то, что "так писать не надо", "это плохой стиль", "вопрос не имеет практического значения" и т.д. сам знаю, интересует не это, а формальный признак, по которому интерпретатор отличает одно от другого. |
Цитата:
http://javascript.ru/Object |
Цитата:
Цитата:
|
nerv_, вспомнил старую детскую загадку.
Вопрос: как запихать бегемота в холодильник Ответ: открыть дверцу холодильника, запихать бегемота в холодильник, закрыть дверцу холодильника. Нет, ну меня прикалывают люди, которые не зная ответа на вопрос, все равно пишут абы что. Я привел конкретную конструкцию, которая по правилам языка может трактоваться и как литерал объекта, и как оператор с меткой перед ним. Ну и по какой конкретно скобочке, двоеточию, или еще какому значку интерпретатор решит что ему делать, создавать объект или нет? Увы, ответить никто не смог... |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
rgl, пока своё невежество показываешь только ты, обзывая оппонентов... :D |
Цитата:
Цитата:
Что же касается данного конкретного случая, то первым я не обзывал, а ответил на скрытое оскорбление "дальше не читал", причем по сути я был прав (каким бы грубым мое высказывание вам не казалось) - оппонент не знал что метка может стоять перед любчм оператором. Ссылаться в инструкции break или continue можно не на любую метку, а только на ту, что стоит в "правильном" месте, но ставить такие метки, на которые нельзя сослаться, стандарт языка не запрещает. |
Цитата:
Цитата:
|
Цитата:
my: { la: { alert( 1 ); } } Цитата:
|
Часовой пояс GMT +3, время: 19:31. |