Javascript - document.write的值(false == null)

时间:2010-04-14 06:57:26

标签: javascript

document.write(false == null)的价值是多少?它应该是 true right(在比较之前转换为相同类型 - null 转换为 false ),如果null为false则比较应返回true ,但打印 false 。为什么呢?

2 个答案:

答案 0 :(得分:5)

您的初始假设不正确(因为您可能已经通过输出得出结果!)。 ==确实会做类型强制,但结果不一定是你所期望的。 null是一个对象,其类型为null - false是一个类型为boolean的对象。 nullboolean类型的对象之间没有强制性,这就是错误的原因。

另一方面,

undefined个对象可以被强制为null。

请注意,双等于运算符的行为方式是奇怪的 - 它甚至不是传递。我强烈建议不要使用它,除非你知道它在你的输入域下的确切表现如何,你确定要这个。手动强制并使用===运算符几乎肯定会更好。

答案 1 :(得分:0)

编辑:我的原始答案完全不正确....以下是正确的

(false == null) === false
(!null) === true

这篇文章中第4或第5个最受欢迎的答案:Strangest language feature有一个javascript真值比较表。