Como funciona o operador existencial do CoffeeScript?
O Coffeescript utiliza o operador existencial para determinar quando existe uma variável, e nodocumentação do coffeescript mostra quesomething?
compilaria parasomething !== undefined && something !== null
no entanto, notei que a minha versão do coffeescript só foi compilando isso parasomething !== null
então eu escrevi um teste para ver como isso afetaria meu código
taco = undefined
if taco?
console.log "fiesta!"
else
console.log "No taco!"
que compilado para
// Generated by CoffeeScript 1.4.0
(function() {
var taco;
taco = void 0;
if (taco != null) {
console.log("fiesta!");
} else {
console.log("No taco!");
}
}).call(this);
e produziu o pouco inesperadoNo taco!
então minha pergunta é dupla. Por que o coffeescript não verifica mais o valor que está sendoundefined
e por que isso é suficiente?