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