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 MyVariableterlebih dahulu, meskipun Anda menyetel MyVariableke 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 undefineduntuk 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? falseyang kemudian membuat CoffeeScript memeriksanya seperti fungsi karena falsedianggap 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");
}