Bu cevap kahve kitabının eski bir versiyonu içindir. Daha güncel bir cevap istiyorsanız yukarıdaki cevaba bakın (Temmuz 2014 itibariyle)
Bu kahve dosyası istediğini yapıyor bence:
if not MyVariable?
MyVariable = "assign a value"
Hangi üretir:
if (!(typeof MyVariable !== "undefined" && MyVariable !== null)) {
MyVariable = "assign a value";
}
Not: MyVariable
İlk olarak bir atama yaparsanız MyVariable
, bu koddaki gibi tanımsız olarak ayarlasanız bile , bu şu şekilde derlenir:
if (!(MyVariable != null)) {
MyVariable = "assign a value";
}
Bunun işe yaradığına inanıyorum çünkü !=
CoffeeScripts Existential Operator
(soru işareti) tarafından kullanılanın undefined
eşit olmaya zorlaması null
.
ps Gerçekten işe başlayabilir misin if (MyVariable?false){ ... }
? Varoluşsal operatör ile false arasında bir boşluk olmadıkça benim için MyVariable? false
derlemez, yani bu da CoffeeScript'in false
sizin için bir parametre olduğunu düşündüğü için onu bir işlev gibi kontrol etmesini sağlar MyVariable
, örneğin :
if MyVariable? false
alert "Would have attempted to call MyVariable as a function"
else
alert "but didn't call MyVariable as it wasn't a function"
Üretir:
if (typeof MyVariable === "function" ? MyVariable(false) : void 0) {
alert("Would have attempted to call MyVariable as a function");
} else {
alert("but didn't call MyVariable as it wasn't a function");
}