我对 NaN 的工作原理感到困惑。我已经执行了isNaN(undefined)
它回来了true
。但如果我会使用Number.isNaN(undefined)
它正在返回false
。那么我应该使用哪一个。还有为什么结果有这么大的差异。
引用一个ponyfoo 关于 ES6 中数字的文章:
Number.isNaN 与 ES5 全局 isNaN 方法几乎相同。
Number.isNaN 返回提供的值是否等于 NaN。这是一个
与“这不是一个数字吗?”的问题非常不同。
So isNaN
只是检查传递的值是否不是数字或无法转换为数字。Number.isNaN
另一方面只检查该值是否等于NaN
(它使用的算法与===
尽管)。
弦乐'ponyfoo'
例如不是数字,不能转换为数字,但它不是NaN
.
Example:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)