Por favor, explique este uso de dois pontos em javascript
Estou fazendo uma biblioteca, e muitas vezes inspeciono o resultado da saída do Compilador do Closure para ver como ele está fazendo as coisas (eu tenho testes de unidade, mas ainda gosto de ver o código compilado para dicas de como ele pode compactar melhor).
Então, eu encontrei este pedaço muito estranho de código, que eu nunca vi antes.
variable : {
some();
code()
}
Nota: isto énão é um objeto literal! Além disso, não há?
em qualquer lugar que faria issoa ?:
condicional.
Esse código está em um bloco de função regular (aIIFE).
variable
, neste caso, é uma variável indefinida.Não há código tornando-se verdadeiro, falso ou o que for, e só para ter certeza, eu coloquei umconsole.log
lá e de fato, eu tenho umReferenceError
.
Por favor, note que eu testo o meu código no IE8 também, então isso não é apenas nos navegadores modernos. Parece ser um javascript normal e simples.
Então vamos experimentar. Ativando o console do Chrome, recebo isto:
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.
mas então...
(true):{console.log('does this work too?')} // SyntaxError: Unexpected token :
...e...
so?{console.log('is this a conditional?')}:{alert(123)} // Unexpected token .
Então, o que isso faz?
thisThing:{console.log('is used to declare a variable?')}
thisThing // ReferenceError: thisThing is not defined
Por favor, eu adoraria se alguém pudesse me explicar o que esse código deve fazer, ou pelo menos o que ele faz.