1

以下のコードでは:

console.log((false || "test")? "first": "second"));

最初の部分のo/pはtest(false || "test")なので、最後のo / pはどのように最初になりますか?条件演算子が式をTrueまたはFalseとして評価できない場合、一般的に何が起こりますか?

4

5 に答える 5

3

||ORです。したがって、ブール値が必要な場合は、(false || "test")と同等"test"です。そして、ブール値が必要な場合のように"test"強制されます(そうではない、そうではないが、と見なされます)。true0"""0"true

ECMAScript仕様に見られるように、はtoBooleanifを使用して条件をブール値に変換します。

ここに画像の説明を入力してください

于 2012-10-02T13:16:53.900 に答える
1

javascriptのすべての値は、そのタイプに関係なく、ブール値に強制変換できます。

強制する値falseは「falsey」と呼ばれ、強制する値はtrue「truthy」と呼ばれます。

これは、この強制を示すフィドルです。

この場合:

(false || "test") ? "first" : "second")

(false || "test")は論理的に("test")false || Xと同等です(論理に興味がある場合、これは選言三段論法Xと呼ばれます)。

javascript内の空でない文字列(文字列を含む、'false'そのバグを楽しんでいます)は、に強制されるtrueため、3次条件はに評価されtrueてログに記録され'first'ます。

于 2012-10-02T13:19:05.760 に答える
0

演算子は、左側がtrueの||場合は左側を返し、そうでない場合は右側を返します。

したがって(false || "test")、です"test"

"test"真の値なので、次のようになります。

"test" ? "first" : "second"

三項演算子は、前の値が真の値(つまり)である:場合、前の値を返します。?

条件演算子が式をTrueまたはFalseとして評価できない場合、一般的に何が起こりますか?

任意の式の結果は、真または偽の値であると評価できるため、それは決して起こりません。

于 2012-10-02T13:17:45.113 に答える
0

Javascriptは暗黙的ににキャストtestするためtrueです。文字列をブール値に変換する際、Javascriptは空でない文字列をに変換しtrue、空の文字列をに変換しfalseます。

したがって、||演算子の最初のオペランドは、であるためfalsefalse || "test"式は2番目の引数を返し、それまでにtrueに変換されます。したがってfirst、出力として取得します。

于 2012-10-02T13:17:55.753 に答える
0

「条件演算子が式をTrueまたはFalseとして評価できない場合、一般的に何が起こりますか?」

JavaScriptのすべての式は、すべての型がブール値に強制可能であるため、trueまたはそれが原因で評価できます。false

あなたのコードでは、"test"オペランドは効果的にとして評価されます。Boolean("test")これはtrueです。

に強制する値falseは次のとおりです。

  • false (明らかに)
  • NaN
  • "" (空の文字列)
  • 0
  • null
  • undefined

他のすべては考慮されtrueます。

于 2012-10-02T13:16:50.950 に答える