Javascript evalはトライステートブール論理を正しく評価しますか?
「正しい」を定義します。Javascriptは動作を定義します。Eval
Javascriptでは、文字列をjavascriptコードとして評価します。SQLは動作も定義します。動作は両方で異なります。
javascriptでは、ブール式null
のように動作します(偽物です)。false
0
、、、、NaN
(そしてもちろん)""
はすべて偽物です。オブジェクト、空でない文字列、およびゼロ以外の数値(そしてもちろん)はすべて真実です。null
undefined
false
true
&&
最初の偽の引数(存在する場合)または最後の引数(遅延AND)を返し、残りを評価しません。null && "anything"
ですnull
。これは、のようなステートメントで使用できますconsole && console.log && console.log()
。
||
最初の真の引数(存在する場合)または最後の引数(遅延OR)を返し、残りを評価しません。null || "something"
です"something"
。これは、次のようなステートメントで使用できます。var xhr = XmlHttpRequest || ItsReplacementInOlderBrowsers
!null
に評価されtrue
ます。ブランチif(null) ...
を評価します。else
同じことが偽物にも当てはまります。
技術的には、未定義の変数はundefined
であり、ではありませんnull
。ただし、どちらも偽物です。