この質問に答えたばかりですが、なぜこのように機能するのかわかりません。
基本的に、問題は次のように単純化できます。
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 // ???