Пожалуйста, объясните это использование двоеточия в JavaScript

я делаю библиотеку, и я часто проверяю результат Closure Compiler 'вывод, чтобы увидеть, как эточто-то делает (у меня есть модульные тесты, но мне все еще нравится видеть скомпилированный код для подсказок о том, как он может лучше сжаться).

Итак, я нашел этот очень странный кусок кода, который я никогда раньше не видел.

variable : {
    some();
    code()
}

Примечание: этоне объект буквальный! Также нет? где-нибудь, что сделало бы это?: условна.

Этот код находится в обычном функциональном блоке (IIFE).

variableв данном случае это неопределенная переменная.Там'Нет кода, делающего это правдой, ложью или чем-то ещеи просто чтобы убедиться, я положилconsole.log там и действительно, я получаю.ReferenceError

Обратите внимание, что я тестирую свой код и в IE8, так что это нет только в современных браузерах. Кажется, это стандартный, старый добрый javascript.

Так что давайте'Эксперимент с этим. Зажигать Хромс консоли, я получаю это:

undeclaredVariable:{console.log('does this get logged?')} // yes it does.
trueValue:{console.log('what about this?')}               // same thing.
falseValue:{console.log('and this?')}                     // same thing.

но потом...

(true):{console.log('does this work too?')} // SyntaxError: Unexpected token :

...а также...

so?{console.log('is this a conditional?')}:{alert(123)} // Unexpected token .

Так что же это делает?

thisThing:{console.log('is used to declare a variable?')}
thisThing // ReferenceError: thisThing is not defined

Пожалуйста, я'Буду рад, если кто-нибудь сможет объяснить мне, для чего предназначен этот код, или, по крайней мере, для чего он нужен.

Ответы на вопрос(5)

Ваш ответ на вопрос