この回答は、古いバージョンのcoffeescriptに対するものです。最新の回答が必要な場合は、上記のJaiderの回答を参照してください(2014年7月現在)
このコーヒースクリプトはあなたが私が考えていることをします:
if not MyVariable?
MyVariable = "assign a value"
生成されるもの:
if (!(typeof MyVariable !== "undefined" && MyVariable !== null)) {
MyVariable = "assign a value";
}
MyVariable
最初にを割り当てた場合MyVariable
、このコードのようにundefinedに設定しても、コンパイルは次のようになります。
if (!(MyVariable != null)) {
MyVariable = "assign a value";
}
!=
CoffeeScripts Existential Operator
(疑問符)undefined
がと等しくなるように強制するので、これはうまくいくと思いますnull
。
ps実際if (MyVariable?false){ ... }
に働けますか?そこに実存オペレータと偽すなわちとの間のスペースでない限り、それは私のためにコンパイルされませんMyVariable? false
、その後のCoffeeScriptが原因の関数のようにそれを確認しますfalse
、それは考えているあなたのためのパラメータでありMyVariable
、例えば:
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");
}