我无法理解 JavaScript 中相等运算符的行为。这是我在浏览器控制台上运行以下命令时得到的结果:
new Object() == true // returns false
new Object() != false // returns true
现在,我不同意 Object 应该为 false 这一事实(尽管在检查了 ECMAScript Language Specification 之后我理解了为什么),但真正困扰我的是我得到了两个两个等价逻辑表达式的不同结果。
发生了什么事?
最佳答案
根据规范,这两个都应该返回false
(这符合我的常识):
new Object() == true // false
new Object() == false // false
基于:
If Type(x) is Object and Type(y) is either String or Number, return the result of the comparison ToPrimitive(x) == y.
Return false.
因为它们都返回 false 并且:
A != B is equivalent to !(A == B).
这两个都应该是true
:
new Object() != true // true
new Object() != false // true
注意:
这不应与 new Object()
的真实性相混淆。换句话说 new Object() == true
是不一样的 Boolean(new Object()) == true
关于javascript - 使用 `!=` 和 `==` 比较对象和 bool 值有不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53441977/