Как работает экзистенциальный оператор CoffeeScript?
Coffeescript использует экзистенциальный оператор, чтобы определить, когда переменная существует, и вкофейная документация это показывает, чтоsomething?
будет компилировать вsomething !== undefined && something !== null
Однако я заметил, что моя версия Coffeescript только компилирует этоsomething !== null
поэтому я написал тест, чтобы увидеть, как это повлияет на мой код
taco = undefined
if taco?
console.log "fiesta!"
else
console.log "No taco!"
который составлен в
// 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);
и вывел несколько неожиданныйNo taco!
так что мой вопрос в два раза. Почему coffeescript больше не проверяет значениеundefined
и почему этот suficiant?