Jak działa egzystencjalny operator CoffeeScript?
Coffeescript używa operatora egzystencjalnego do określenia, kiedy zmienna istnieje i wdokumentacja coffeescript to pokazuje żesomething?
skompilowałbym sięsomething !== undefined && something !== null
zauważyłem jednak, że moja wersja coffeescript kompilowała to tylko dosomething !== null
więc napisałem test, aby zobaczyć, jak to wpłynie na mój kod
taco = undefined
if taco?
console.log "fiesta!"
else
console.log "No taco!"
który się skompilował
// 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);
i wypisał nieco nieoczekiwanyNo taco!
więc moje pytanie jest dwojakie. Dlaczego coffeescript nie sprawdza już wartościundefined
i dlaczego to jest takie trudne?