Пожалуйста, объясните это использование двоеточия в 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
Пожалуйста, я'Буду рад, если кто-нибудь сможет объяснить мне, для чего предназначен этот код, или, по крайней мере, для чего он нужен.