変数が作成されていないかどうかを確認するためのJavaScriptでは、単に
if (typeof MyVariable !== "undefined"){ ... }
私はコーヒースクリプトでそれをどのように行うのだろうか?...
if (MyVariable?false){ ... }
しかし、これはMyVariable
が関数であるかどうかをチェックし、そうであればMyVariable(false)を呼び出し、そうでなければvoid(0)またはそのようなものを呼び出します。
最後に、この簡単な方法を見つけました:
if (MyVariable?){ ... }
生成されるもの:
if (typeof MyVariable !== "undefined" && MyVariable !== null){ ... }
2014年4月7日更新デモリンク
まず、あなたの質問に答えるために:
if typeof myVariable isnt 'undefined' then # do stuff
Magrangsのソリューションは、未定義とfalseを区別する必要がある場合を除いて、ほとんどの場合に機能します(たとえば、myVariableがtrue、false、またはundefinedの場合)。
そして、単に指摘するために、括弧で条件をラップするべきではなく、中括弧を使用するべきではありません。
then
キーワードは、すべてが同じ行にある場合に使用できます。そうでない場合は、インデントを使用して、条件内にあるコードを示します。
if something
# this is inside the if-statement
# this is back outside of the if-statement
お役に立てれば!
この回答はcoffeescriptの古いバージョン用です。最新の回答が必要な場合は、上の Jaiderの回答 を参照してください(2014年7月現在)
このcoffeescript はあなたが望むことをします:
_if not MyVariable?
MyVariable = "assign a value"
_
生成するもの:
_if (!(typeof MyVariable !== "undefined" && MyVariable !== null)) {
MyVariable = "assign a value";
}
_
N.b. this code のようにMyVariable
をundefinedに設定しても、最初にMyVariable
に割り当てを行うと、次のようにコンパイルされます。
_if (!(MyVariable != null)) {
MyVariable = "assign a value";
}
_
CoffeeScripts _!=
_(疑問符)で使用される_Existential Operator
_がundefined
をnull
と等しくなるように強制するため、これが機能すると考えています。
追伸if (MyVariable?false){ ... }
を実際に動作させることはできますか?存在演算子とfalseの間にスペースがない限り、私にとってはコンパイルされません。つまり、_MyVariable? false
_は、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");
}
_
typeof MyVariable isnt "undefined"
from js2coffee
Jaider's answer 上記(評判が不十分なためコメントできませんでした)に加えて、別のケースであることに注意してくださいオブジェクト/配列内にある場合:
someArray['key']?
に変換されます:
someArray['key'] != null
js2coffee.org のスクリーンショット:
私はただ使用します:
if (myVariable)
//do stuff
Undefinedは偽であるため、myVariableがundefinedでない場合のみ処理を行います。
0、 ""、nullの値に対して「処理を行う」ことに注意する必要があります。
変数を未定義の非null変数に割り当てる最もクリーンな方法は、unless
を使用することです。
unless ( myVar? )
myVar = 'val'
なぜORイディオムを使用しないのですか?
myVar or 'val'
そのため、未定義でない限り、結果はmyVarに等しくなり、その場合は「val」に等しくなります。