Por favor explique este uso de dos puntos en javascript

Estoy haciendo una biblioteca y, a menudo, inspecciono el resultado de la salida de Closure Compiler para ver cómo está haciendo las cosas (sí tengo pruebas unitarias, pero todavía me gusta ver el código compilado para obtener sugerencias de cómo podría comprimir mejor).

Entonces, encontré esta pieza de código muy rara, que nunca había visto antes.

variable : {
    some();
    code()
}

Nota: esto esNo es un objeto literal! Además, no hay? en cualquier lugar que lo haríaa ?: condicional.
Ese código está en un bloque de función regular (unIIFE).

variable, en este caso, es una variable indefinida.No hay código que lo haga verdadero, falso, o lo que sea, y solo para asegurarme, pongo unconsole.log allí y de hecho, me sale unReferenceError.

Tenga en cuenta que también pruebo mi código en IE8, por lo que no es solo en los navegadores modernos. Parece ser javascript estándar, simple.

Así que experimentemos con ello. Encendiendo la consola de Chrome, obtengo esto:

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.

pero entonces...

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

...y...

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

Entonces ¿Qué es lo que hace?

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

Por favor, me encantaría que alguien me explicara qué pretende hacer este código, o al menos lo que hace.

Respuestas a la pregunta(5)

Su respuesta a la pregunta