Ваш первый пример - это обозначение с надписью: выражение «2» с меткой «undefined_variable_here». Хотя JavaScript не имеет оператора goto
, есть несколько способов переходить к конкретным операторам при определенных обстоятельствах. Чтобы сделать это, эти утверждения должны иметь прикрепленный идентификатор определенного типа, так что машина знает, куда идти, а метки предоставляют этот идентификатор.
Ваш второй пример литерал объекта: выражение для одного объекта, который имеет одно свойство, называемое «another_undefined_variable» со значением 3.
В обоих случаях вставка точек с запятой неявно заканчивает заявление. Таким образом, первый пример, по существу, эквивалентно утверждению:
2;
Это утверждение не очень полезно само по себе, потому что он ничего не делает, но является правовой JavaScript. Второй пример фактически немного работает, поскольку он должен создать объект, но поскольку он не попадает в переменную, ссылок нет: вы не можете попасть на него, а сборщик мусора вытрит его при следующей возможности. Все еще не очень полезно, но все же легально.
Последний явно законный. Он просто инициализирует объект в JSON. –
Это неверно, потому что {a: 1, b: 2} выдает ошибку! –
@MathiasLykkegaardLorenzen это было бы [JSON] (http://en.wikipedia.org/wiki/JSON) при цитировании имени идентификатора. Код OPs - это просто JavaScript. –