document.write(false == null)
的价值是多少?它应该是 true right(在比较之前转换为相同类型 - null 转换为 false ),如果null为false则比较应返回true ,但打印 false 。为什么呢?
答案 0 :(得分:5)
您的初始假设不正确(因为您可能已经通过输出得出结果!)。 ==
确实会做类型强制,但结果不一定是你所期望的。 null
是一个对象,其类型为null - false
是一个类型为boolean的对象。 null
和boolean
类型的对象之间没有强制性,这就是错误的原因。
undefined
个对象可以被强制为null。
请注意,双等于运算符的行为方式是奇怪的 - 它甚至不是传递。我强烈建议不要使用它,除非你知道它在你的输入域下的确切表现如何,你确定要这个。手动强制并使用===
运算符几乎肯定会更好。
答案 1 :(得分:0)
编辑:我的原始答案完全不正确....以下是正确的
(false == null) === false
(!null) === true
这篇文章中第4或第5个最受欢迎的答案:Strangest language feature有一个javascript真值比较表。