変数またはプロパティが null ではなく、CS で未定義ではないかどうかを確認したいことがよくあります。の接尾辞以外に「真実」チェックのショートカットはあり?
ますundefined
か?
1 に答える
1
@Austin Mullins、それは本当ですが、すべてのチェックが生成されると想定し、変数の使用に基づいてCoffeeScriptコンパイラが異なる結果を生成することがわかりました。
使用前に宣言される (値が割り当てられる) 変数は、!= nullをチェックします。undefinedを明示的に代入しても(Javascriptは未定義を返すvoid 0にコンパイルされます)、コンパイラの動作は変わりません。
関係なく結果は同じですか?期待どおりに動作するようです。
私が見つけたもののデモ (プレビュー リンク)、http://preview.tinyurl.com/cmo6xw7
リンクをたどり、[実行] ボタン (右上)をクリックします。
コード...
((arg) ->
str = "Hello World!"
num = 42
foo = arg
# Lets see what the compiler produces
alert "str is #{str}" if str?
alert "num is #{num}" if num?
alert "foo is #{foo}" if foo?
# bar has not been assigned a value or used until now
alert "bar is #{bar}" if bar?
# Lets assign str to something that isn't straight up null
# cs will translate undefined into the expression that returns undefined
str = undefined
# Shorthand
if str?
alert "str? is #{str}"
else
alert "str? is empty"
# Explicit checks
if typeof str isnt "undefined" && str isnt null
alert "str explicit check is #{str}"
else
alert "str explicit check is empty"
).call()
于 2013-03-21T00:19:30.410 に答える