【发布时间】:2016-03-19 15:11:32
【问题描述】:
首先我想提一下,我知道isNaN() 和Number.isNaN() 是如何工作的。我正在阅读 David Flanagan 的 The Definite Guide,他举例说明了如何检查值是否为 NaN:
x !== x
这将导致true 当且仅当x 是NaN。
但现在我有一个问题:他为什么要使用严格比较?因为好像
x != x
行为方式相同。使用这两个版本是否安全,或者我在 JavaScript 中遗漏了一些值,这些值将返回 x !== x 的 true 和 x != x 的 false?
【问题讨论】:
-
这可能是弗拉纳根更喜欢
!==支票而不是!=支票。据我所知,x != x没有其他价值。但是有两组不同的 JavaScript 开发人员:喜欢!=的人和喜欢!==的人,无论是速度、清晰度、表达力等。 -
当严格比较的行为方式相同时,为什么要使用松散比较?
-
@Raulucco:
NaN不是唯一类型,它是一个数字。它是一个不等于自身的唯一值。 -
标题似乎误导了人。我建议将其更改为“x != x 与 x !== x 不同吗?”
-
@femmestem:Giorgi 说“在这种情况下”,这是风格问题。他是正确的。当操作数的类型不同时它是不是样式,但是当它们相同时它是是样式。另外:Flanagan 正在将
===与 NaN 进行比较,以表明 NaN 不等于自身。他没有“错”,他将其作为一种教学练习,证明它不起作用。
标签: javascript nan