JavaScript NaN 等价
JavaScript NaN equvialence
为了好玩,我试图将我设置为 NaN 的值与我也设置为 NaN 的另一个值进行比较。
为什么两个具有相同值的变量不相等?
var a = Number.Nan
var b = Number.Nan
a === b
false
a == b
false
var a = NaN
var b = NaN
a === b
false
a == b
false
为什么会这样?
NaN 不是数字,没有要比较的评估数值 - 使用 IsNaN() 比较 NaN 值。 W3 Schools link
请记住,很多 JavaScript 都不是很好。它是在 10 天内设计的,其中很多(不是全部)可能不直观。这是您不考虑原因而只是使用 isNaN(someVar) 来检查它的时候之一。
正如@TechnicalChaos 所说,但这里是 W3School 上的 MDN 链接 ;)
南:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN
是南:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN
相关部分是:
It is rather rare to use NaN in a program. It is the returned value
when Math functions fail (Math.sqrt(-1)) or when a function trying to
parse a number fails (parseInt("blabla")).
并且:
Unlike all other possible values in JavaScript, it is not possible to
rely on the equality operators (== and ===) to determine whether a
value is NaN or not, because both NaN == NaN and NaN === NaN evaluate
to false. Hence, the necessity of an isNaN function.
不要把 NaN
想成和 null
或 undefined
一样的思路,它是 "special case" :P
但是如果你愿意为了一块饼干冒险:
NaN.toString() === NaN.toString()
true
但不要那样做!
为了好玩,我试图将我设置为 NaN 的值与我也设置为 NaN 的另一个值进行比较。
为什么两个具有相同值的变量不相等?
var a = Number.Nan
var b = Number.Nan
a === b
false
a == b
false
var a = NaN
var b = NaN
a === b
false
a == b
false
为什么会这样?
NaN 不是数字,没有要比较的评估数值 - 使用 IsNaN() 比较 NaN 值。 W3 Schools link
请记住,很多 JavaScript 都不是很好。它是在 10 天内设计的,其中很多(不是全部)可能不直观。这是您不考虑原因而只是使用 isNaN(someVar) 来检查它的时候之一。
正如@TechnicalChaos 所说,但这里是 W3School 上的 MDN 链接 ;)
南:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN
是南: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN
相关部分是:
It is rather rare to use NaN in a program. It is the returned value when Math functions fail (Math.sqrt(-1)) or when a function trying to parse a number fails (parseInt("blabla")).
并且:
Unlike all other possible values in JavaScript, it is not possible to rely on the equality operators (== and ===) to determine whether a value is NaN or not, because both NaN == NaN and NaN === NaN evaluate to false. Hence, the necessity of an isNaN function.
不要把 NaN
想成和 null
或 undefined
一样的思路,它是 "special case" :P
但是如果你愿意为了一块饼干冒险:
NaN.toString() === NaN.toString()
true
但不要那样做!