【发布时间】:2012-07-01 04:09:35
【问题描述】:
据我所知,(x == false) 应该与 !x 做同样的事情,因为他们都试图将 x 解释为布尔值,然后否定它。
但是,当我尝试对此进行测试时,我开始出现一些非常奇怪的行为。
例如:
false == [] 和 false == ![] 都返回 true。
另外
false == undefined 和 true == undefined 都返回 false,也一样
false == Infinity 和 true == Infinity 和
false == NaN 和 true == NaN。
这里到底发生了什么?
【问题讨论】:
-
与
===得到相同的结果吗? -
false == []可以解释为[].toString() == ""和false == ""。 -
无论如何,听起来你好像相信,如果
false == undefined返回false,那么true == undefined应该返回true,但实际上为什么这些比较应该返回任何有意义的东西呢? -
@RobertHarvey 它没有,这是一个学术练习。显然,任何写 if(![] == false) 的人都应该被解雇。
-
@RobertKoritnik:是的,这个问题是反问的。
标签: javascript type-conversion