我无法理解JavaScript中相等运算符的行为。这是在浏览器的控制台上运行以下命令时得到的:
new Object() == true // returns false
new Object() != false // returns true
现在,我不同意一个对象应该为假的事实(尽管在检查ECMAScript Language Specification之后我已经理解了为什么),但真正困扰我的是我在两个等效的逻辑表达式上得到两个不同的结果。
发生了什么事?
答案 0 :(得分:1)
答案 1 :(得分:1)
根据规范,这两个都应返回false
(这符合我的常识):
new Object() == true // false
new Object() == false // false
基于:
如果类型(x)为对象,类型(y)为字符串或数字, 返回比较结果ToPrimitive(x)== y。
返回false。
由于它们都返回false并且:
A!= B等于!(A == B)。
这两个都应为true
:
new Object() != true // true
new Object() != false // true
注意:
这不应与new Object()
的真实性混淆。换句话说new Object() == true
与Boolean(new Object()) == true