📅  最后修改于: 2023-12-03 14:58:59.846000             🧑  作者: Mango
在 JavaScript 中,NaN 表示不是一个数(Not a Number)。当一些操作无法返回有效结果时,常常会返回 NaN。例如:
console.log(0/0); // NaN
console.log(Math.sqrt(-1)); // NaN
console.log(parseInt("abc")); // NaN
然而,奇怪的是,NaN 不等于任何值,包括自身。这就引出了下面的问题:
(NaN == NaN)
的结果是什么?(NaN === NaN)
的结果是什么?(NaN == NaN)
这个问题比较简单。使用 ==
进行比较时,会自动进行类型转换,因此:
console.log(NaN == NaN); // false
结果是 false
,也就是说,NaN 不等于自身。
这是因为 JavaScript 规定,当使用 ==
进行比较时,如果两个操作数类型不同,则会先将它们转换为相同类型,再进行比较。NaN 与任何数(包括自身)做任何比较操作,结果都为 false,这是 NaN 的定义。
(NaN === NaN)
这个问题稍微复杂一些。使用 ===
进行比较时,不会进行类型转换,因此:
console.log(NaN === NaN); // false
结果同样是 false
。
不同于 ==
,!==
运算符同样不会进行类型转换,因此:
console.log(NaN !== NaN); // true
结果是 true
。
在 JavaScript 中,NaN 不等于任何值,包括自身。使用 ==
进行比较时,会先进行类型转换,因此 (NaN == NaN)
的结果是 false
;使用 ===
或 !==
进行比较时,不会进行类型转换,因此 (NaN === NaN)
的结果是 false
,(NaN !== NaN)
的结果是 true
。
需要注意的是,在实际开发中,应避免将任何值与 NaN 进行比较,应该使用 isNaN()
函数检测一个值是否为 NaN。