Number.isNaN和isNaN有什么区别?

在JavaScript中,Number.isNaN 和全局的 isNaN 函数都用于确定某个值是否是 "NaN"(Not-A-Number,非数字)。然而,它们的行为在处理非数字值时有显著的区别。

  1. 全局的 isNaN 函数

全局的 isNaN 函数在接收参数后,会首先尝试将参数转换为数字。如果转换成功,则进一步检查转换后的值是否为 NaN。如果转换失败,它仍然会返回 true。这意味着,对于一些非数字值,全局的 isNaN 函数可能会返回 true,即使这些值在转换为数字后并不是 NaN

例如:

isNaN('hello');  // true,因为 'hello' 在转换为数字时失败,所以返回 true
isNaN(123);     // false,因为 123 是一个数字,且不是 NaN
  1. Number.isNaN 函数

相比之下,Number.isNaN 函数在接收参数后,并不会尝试将参数转换为数字。它只会检查参数是否严格等于 NaN。如果参数不是 NaN,那么无论它是什么类型,Number.isNaN 都会返回 false

例如:

Number.isNaN('hello');  // false,因为 'hello' 并不严格等于 NaN
Number.isNaN(NaN);      // true,因为 NaN 严格等于 NaN

总结

  • 全局的 isNaN 函数在检查前会尝试进行类型转换,这可能导致一些非预期的结果。
  • Number.isNaN 函数则更为严格,它只在值严格等于 NaN 时返回 true。这通常使得 Number.isNaN 在判断一个值是否确实是 NaN 时更为可靠。因此,在大多数情况下,推荐使用 Number.isNaN
posted @   王铁柱6  阅读(56)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示