JavaScript 的特殊行为(其中 NaN === NaN
计算结果为 false
)经常让开发人员感到困惑。 本文阐明了为什么会出现这种情况,并提供了 NaN 检测的正确方法。
理解 NaN
NaN 是“Not-a-Number”的缩写,表示无效或未定义的数学运算的结果。 示例包括:
console.log(0 / 0); // NaN console.log(Math.sqrt(-1)); // NaN
为什么不平等?
浮点运算的 IEEE 754 标准规定 NaN 不等于任何东西,包括它本身。 这种设计可以防止错误地处理无效结果,就好像它们是有效的数值一样。 本质上,NaN 标记了错误情况并且本质上是不可比较的。
可靠的 NaN 检查
处理 NaN 时直接比较失败。 相反,请使用这些函数:
isNaN()
: 此全局函数检查值是否为 NaN 或者可以强制转换为 NaN:console.log(isNaN("abc")); // true
Number.isNaN()
: 此方法提供了对 NaN 的更精确检查,避免类型强制:console.log(Number.isNaN(NaN)); // true
总结
NaN === NaN
比较产生 false
因为 NaN 代表错误状态,而不是数值。 要准确检测 NaN,请使用 isNaN()
或 Number.isNaN()
来获得健壮且可靠的代码。
来源
以上是为什么NAN === Nan在JavaScript中返回False?的详细内容。更多信息请关注PHP中文网其他相关文章!