在使用isNaN和Number.NaN两者的时候,会有些疑惑,有啥区别呢?并且对应一些常见的计算结果是什么样的呢?
isNaN
isNaN函数是用来确定一个值是否是NaN,可以在全局直接使用,返回值是一个布尔值true或false:
isNaN(12)
//输出 false
isNaN('')
//输出 false
isNaN('less')
//输出 true
isNaN(NaN)
//输出 true
Number.isNaN
Number.isNaN函数是来确认一个数字是否为NaN,可以在全局使用,返回值为一个布尔值true或false:
Number.isNaN(12)
// 输出 false
Number.isNaN('')
// 输出 false
Number.isNaN('less')
// 输出 false
Number.isNaN(true)
// 输出 false
两者的区别
如果isNaN函数的参数不是Number类型, isNaN函数会首先尝试将这个参数转换为数值,然后才会对转换后的结果是否是NaN进行判断, 也就是说,isNaN的参数首先会执行Number()进行强制转换,然后再去判断是否是NaN。
Number.isNaN函数会先检查参数是不是Number类型,如果不是,直接会返回false,只有参数是Number类型才会去判断是不是NaN