javascript中isNaN和Number.isNaN之间的混淆

Confusion between isNaN and Number.isNaN in javascript(javascript中isNaN和Number.isNaN之间的混淆)
本文介绍了javascript中isNaN和Number.isNaN之间的混淆的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a confusion in how NaN works. I have executed isNaN(undefined) it returned true . But if I will use Number.isNaN(undefined) it is returning false. So which one i should use. Also why there is so discrepancy in the result.

推荐答案

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

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

Number.isNaN is almost identical to ES5 global isNaN method. Number.isNaN returns whether the provided value equals NaN. This is a very different question from "is this not a number?".

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

So isNaN just checks whether the passed value is not a number or cannot be converted into a Number. Number.isNaN on the other hand only checks if the value is equal to NaN (it uses a different algorithm than === though).

例如String 'ponyfoo' 不是数字,不能转换成数字,但不是NaN.

The String 'ponyfoo' for example is not a number and cannot be converted into a number, but it is not 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

这篇关于javascript中isNaN和Number.isNaN之间的混淆的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Update another component when Formik form changes(当Formik表单更改时更新另一个组件)
Formik validation isSubmitting / isValidating not getting set to true(Formik验证正在提交/isValiating未设置为True)
React Validation Max Range Using Formik(使用Formik的Reaction验证最大范围)
Validation using Yup to check string or number length(使用YUP检查字符串或数字长度的验证)
Updating initialValues prop on Formik Form does not update input value(更新Formik表单上的初始值属性不会更新输入值)
password validation with yup and formik(使用YUP和Formick进行密码验证)