Jawaban ini untuk coffeescript versi lama. Lihat jawaban Jaider di atas jika Anda menginginkan jawaban yang lebih up to date (per Juli 2014)
Coffeescript ini melakukan apa yang Anda inginkan, saya pikir:
if not MyVariable?
MyVariable = "assign a value"
Yang menghasilkan:
if (!(typeof MyVariable !== "undefined" && MyVariable !== null)) {
MyVariable = "assign a value";
}
Nb jika Anda membuat tugas MyVariable
terlebih dahulu, meskipun Anda menyetel MyVariable
ke tidak terdefinisi seperti dalam kode ini , maka ini akan dikompilasi ke:
if (!(MyVariable != null)) {
MyVariable = "assign a value";
}
Saya percaya ini berhasil karena yang !=
digunakan oleh CoffeeScripts Existential Operator
(tanda tanya) memaksa undefined
untuk menjadi sama null
.
ps Bisakah kamu mulai if (MyVariable?false){ ... }
bekerja? Itu tidak dapat dikompilasi untuk saya kecuali ada spasi antara operator eksistensial dan false yaitu MyVariable? false
yang kemudian membuat CoffeeScript memeriksanya seperti fungsi karena false
dianggap sebagai parameter untuk Anda MyVariable
, misalnya :
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"
Menghasilkan:
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");
}