isNaN和Number.NaN

135 阅读1分钟

在使用isNaNNumber.NaN两者的时候,会有些疑惑,有啥区别呢?并且对应一些常见的计算结果是什么样的呢?

isNaN

isNaN函数是用来确定一个值是否是NaN,可以在全局直接使用,返回值是一个布尔值truefalse

isNaN(12)
//输出 false
isNaN('')
//输出 false
isNaN('less')
//输出 true
isNaN(NaN)
//输出 true

Number.isNaN

Number.isNaN函数是来确认一个数字是否为NaN,可以在全局使用,返回值为一个布尔值truefalse

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