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?

questionAnswers(1)

yourAnswerToTheQuestion