私はCoffeeScriptコンパイル者にちょっと奇妙なことに気付き、これが正しい動作かどうか疑問に思っていました。それが正しい場合差がある理由は、私は好奇心が強い。..CoffeeScript Existential Operator and this
次のCoffeeScriptを考える:
if @myVar?
alert myVar
私はこのようなJavaScriptにコンパイルすることを期待していた。
if (typeof this.myVar !== "undefined" && this.myVar !== null) {
alert(myVar);
}
しかし、代わりにCoffeeScriptコンパイラが出力するものは次のとおりです。
if (this.myVar != null) {
alert(myVar);
}
これを参照していないまたは他の親オブジェクト)、私が期待するようにCoffeeScriptがコンパイルされます。
これは正しい動作ですか?もしそうなら、これを使うときにはなぜ違うのですか?
編集:
もう少し説明を追加してください。これは、これだけではなく、他のオブジェクトのプロパティでも発生します。ことができます
myVar = 10
if myVar?
alert myVar
のCoffeeScriptのコンパイラ:「!= nullの」たとえば、私がいた場合のケースで...まだだけでコンパイルします
if myVar.myProp?
alert myVar
可能重複していますプロパティ](http://stackoverflow.com/questions/9990117/existential-operator-and-object-properties) –