【图解系列】isNaN 和 Number.isNaN 函数的区别?
2022-07-01 16:13 作者:doubleyong | 我要投稿
图解:

文字描述:
函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。
函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。
mdn引用:
如果isNaN
函数的参数不是Number
类型, isNaN
函数会首先尝试将这个参数转换为数值,然后才会对转换后的结果是否是NaN
进行判断。因此,对于能被强制转换为有效的非 NaN 数值来说(空字符串和布尔值分别会被强制转换为数值 0 和 1),返回false值也许会让人感觉莫名其妙。
下一个版本的 ECMAScript (ES2015) 包含Number.isNaN()
函数。通过Number.isNaN(x)
来检测变量x
是否是一个NaN
将会是一种可靠的做法。然而,在缺少Number.isNaN
函数的情况下,通过表达式(x != x)
来检测变量 x
是否是NaN
会更加可靠。