Этот ответ предназначен для более старой версии coffeescript. См Jaider's answer above, если вы хотите более до даты ответа (по состоянию на июль 2014 г.)
This coffeescript делает то, что вы хотите, я думаю:
if not MyVariable?
MyVariable = "assign a value"
Который производит:
if (!(typeof MyVariable !== "undefined" && MyVariable !== null)) {
MyVariable = "assign a value";
}
нотабенеесли вы сделаете задание MyVariable
первым, даже если вы установили MyVariable
к неопределенным, как и в this code, то это компилируется:
if (!(MyVariable != null)) {
MyVariable = "assign a value";
}
Я считаю, что это работает, потому что !=
используется CoffeeScripts Existential Operator
(знак вопроса) принуждают undefined
равным null
.
p.s. Можете ли вы на самом деле получить if (MyVariable?false){ ... }
? Он не компилирует для меня, если нет пробела между экзистенциальным оператором и ложным, т.е. MyVariable? false
, который затем делает CoffeeScript проверить его, как функции из-за false
, который он считает параметр для MyVariable
, for example:
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"
Производит:
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");
}
См. Также [coffeescript не null или undefined] (http://stackoverflow.com/q/20010245/1048572) – Bergi
Попробуйте 'if MyVariable is undefined', который создает' if (MyVariable! == void 0) '. –