Coffeescript使用存在操作符來確定何時存在一個變量,並在coffeescript documentation它顯示something?
將編譯爲something !== undefined && something !== null
但是我注意到我的版本的coffeescript只編譯something !== null
,所以我寫了一個測試,看看這將如何影響我的代碼CoffeeScript的存在操作符是如何工作的?
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?
不是一個確切的問題重複,但答案是一樣的:http://stackoverflow.com/questions/9990117/existential-operator-and-object-properties:D – epidemian