这是官方文档中的拼写错误吗?

时间:2015-11-30 13:07:13

标签: javascript

我在这里的官方文件https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators上看到:

  

Null和Undefined类型严格等于它们自己和   抽象地彼此相等。

但我已经在浏览器的控制台中查看了它。所以:

undefined == null --> true 

但是

undefined === null --> false //WTF?

这是文档中的拼写错误???

3 个答案:

答案 0 :(得分:5)

严格 等于自己(请参阅文档了解strict(===)和{{之间的区别3}}(==)相等)所以它是

undefined === undefined // strict equal -> true

null === null // strict equal -> true

null == undefined // abstract equal -> true

但不是

undefined === null // strict equal -> false

答案 1 :(得分:2)

不是拼写错误,文档如下所示

  

Null和Undefined Types严格等于本身

意思是

null === null equals true
undefined === undefined equals true

null == undefined equals true

反过来

null === undefined equals false

答案 2 :(得分:0)

如果给定的类型不同,

===也会失败,因为它会检查以及类型而不是仅仅,这是==所做的事情,例如

'1' == 1 // => true

BUT

'1' === 1 // => false

使用JS中的typeof运算符可以看出差异

typeof null // => object

typeof undefined // => undefined

这也是您希望始终使用===而不是==的原因,因为类型强制造成了一些疯狂的错误。

如果你不知道强制是什么类型,它只是意味着转换一个类型,以便它可能与另一种类型相匹配,

在此表达式中,数字1将转换为字符串,以使用==

匹配字符串1

if ('1' == 1)

最好保持==不变,只使用===

所以当===遇到这种比较时,无论如何都会自动失败。