Câu trả lời này dành cho phiên bản cũ hơn của coffeescript. Xem câu trả lời của Jaider ở trên nếu bạn muốn có câu trả lời cập nhật hơn (kể từ tháng 7 năm 2014)
Bản ghi chép này thực hiện những gì bạn muốn Tôi nghĩ:
if not MyVariable?
MyVariable = "assign a value"
Sản xuất:
if (!(typeof MyVariable !== "undefined" && MyVariable !== null)) {
MyVariable = "assign a value";
}
Nb nếu bạn thực hiện một nhiệm vụ MyVariable
đầu tiên, ngay cả khi bạn đặt MyVariable
thành không xác định như trong mã này , thì điều này sẽ biên dịch thành:
if (!(MyVariable != null)) {
MyVariable = "assign a value";
}
Tôi tin rằng điều này hiệu quả bởi vì !=
CoffeeScripts Existential Operator
(dấu chấm hỏi) được sử dụng buộc undefined
phải bằng null
.
ps Bạn thực sự có thể if (MyVariable?false){ ... }
đi làm không? Nó không biên dịch cho tôi trừ khi có khoảng MyVariable? false
trắng giữa toán tử hiện sinh và sai, tức là sau đó làm cho CoffeeScript kiểm tra nó giống như một hàm vì false
nó nghĩ là một tham số cho của bạn MyVariable
, ví dụ :
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"
Sản xuất:
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");
}