2

この質問に答えたばかりですが、なぜこのように機能するのかわかりません。

基本的に、問題は次のように単純化できます。

var b = new Boolean(false);
console.info(b == false); // Prints "true" - OK
console.info(b && true); // Prints "true" - but should be "false"

true直感的ではない自動キャストが行われていると思いますが、自動的に にキャストされることもあれば、にキャストされることもわかりませんfalse。何か案が?

これは問題をよりよく示していると思います:

> false && 123

false // OK 

> new Boolean(false) && 123

123   // ???
4

4 に答える 4

2

==多くの強制を行います:

Object == false =>
Object == 0 =>
Object.valueOf() == 0 =>
false == 0 =>
0 == 0 =>
true

または、アルゴリズムの手順に従うと、

Step 7, Step 9, Step 6, Step 1 c iii.

論理 and は直接 for に進みToBoolean、これは常にtruefor objectsを返します。

ブール値ではなくオブジェクトを返すことに注意してください。new Boolean

于 2013-07-11T10:29:16.840 に答える
0

False AND False は false です。真理値表 - AND は、両方の引数が true の場合にのみ true を返します。この場合もそうではありません.

編集: True AND False も false であるため、&& False はすべて false です。

于 2013-07-11T10:27:01.103 に答える