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