私の知る限りで(x == false)
は、 と同じことを行う必要があります。!x
どちらもx
ブール値として解釈しようとし、それを否定するからです。
ただし、これをテストしようとすると、非常に奇妙な動作が発生し始めました。
例えば:
false == []
どちらも trueをfalse == ![]
返します。
さらに
false == undefined
true == undefined
どちらも false を返します。
false == Infinity
そしてtrue == Infinity
そして
false == NaN
とtrue == NaN
。
ここで何が起こっているのですか?