以下のコードでは:
console.log((false || "test")? "first": "second"));
最初の部分のo/pはtest(false || "test")なので、最後のo / pはどのように最初になりますか?条件演算子が式をTrueまたはFalseとして評価できない場合、一般的に何が起こりますか?
以下のコードでは:
console.log((false || "test")? "first": "second"));
最初の部分のo/pはtest(false || "test")なので、最後のo / pはどのように最初になりますか?条件演算子が式をTrueまたはFalseとして評価できない場合、一般的に何が起こりますか?
javascriptのすべての値は、そのタイプに関係なく、ブール値に強制変換できます。
強制する値falseは「falsey」と呼ばれ、強制する値はtrue「truthy」と呼ばれます。
この場合:
(false || "test") ? "first" : "second")
(false || "test")は論理的に("test")はfalse || Xと同等です(論理に興味がある場合、これは選言三段論法Xと呼ばれます)。
javascript内の空でない文字列(文字列を含む、'false'そのバグを楽しんでいます)は、に強制されるtrueため、3次条件はに評価されtrueてログに記録され'first'ます。
演算子は、左側がtrueの||場合は左側を返し、そうでない場合は右側を返します。
したがって(false || "test")、です"test"。
"test"は真の値なので、次のようになります。
"test" ? "first" : "second"
三項演算子は、前の値が真の値(つまり)である:場合、前の値を返します。?
条件演算子が式をTrueまたはFalseとして評価できない場合、一般的に何が起こりますか?
任意の式の結果は、真または偽の値であると評価できるため、それは決して起こりません。
Javascriptは暗黙的ににキャストtestするためtrueです。文字列をブール値に変換する際、Javascriptは空でない文字列をに変換しtrue、空の文字列をに変換しfalseます。
したがって、||演算子の最初のオペランドは、であるためfalse、false || "test"式は2番目の引数を返し、それまでにtrueに変換されます。したがってfirst、出力として取得します。
「条件演算子が式をTrueまたはFalseとして評価できない場合、一般的に何が起こりますか?」
JavaScriptのすべての式は、すべての型がブール値に強制可能であるため、trueまたはそれが原因で評価できます。false
あなたのコードでは、"test"オペランドは効果的にとして評価されます。Boolean("test")これはtrueです。
に強制する値falseは次のとおりです。
false (明らかに)NaN"" (空の文字列)0nullundefined他のすべては考慮されtrueます。