javascript 中 isNaN 和 Number.isNaN 的混淆

新手上路,请多包涵

我对 NaN 的工作原理感到困惑。我已经执行了 isNaN(undefined) 它返回了 true 。但如果我将使用 Number.isNaN(undefined) 它返回 false 。那么我应该使用哪一个。还有为什么结果会有如此大的差异。

原文由 Pranjal Diwedi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 424
1 个回答

引用一篇 关于 ES6 中数字的 ponyfoo 文章

Number.isNaN 几乎与 ES5 全局 isNaN 方法相同。 Number.isNaN 返回提供的值是否等于 NaN。这是一个与“这不是数字吗?”截然不同的问题。

所以 isNaN 只是检查传递的值是否不是数字或不能转换为数字。 Number.isNaN 另一方面只检查值是否等于 NaN (它使用的算法与 === 不同)。

字符串 'ponyfoo' 例如不是数字,不能转换成数字,但它不是 NaN

例子:

 Number.isNaN({});
// <- false, {} is not NaN
Number.isNaN('ponyfoo')
// <- false, 'ponyfoo' is not NaN
Number.isNaN(NaN)
// <- true, NaN is NaN
Number.isNaN('pony'/'foo')
// <- true, 'pony'/'foo' is NaN, NaN is NaN

isNaN({});
// <- true, {} is not a number
isNaN('ponyfoo')
// <- true, 'ponyfoo' is not a number
isNaN(NaN)
// <- true, NaN is not a number
isNaN('pony'/'foo')
// <- true, 'pony'/'foo' is NaN, NaN is not a number

原文由 nils 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题