Javascript中isNaN和Numer.isNaN的区别

isNaN()

当我们将参数传入isNaN时,它的内部实现调用了Number()方法将参数转换为Number类型,如下所示。

1
2
3
4
5
6
7
Number('')  // 0
Number(null) // 0
Number(true) // 1
Number(false) // 0
Number(undefined) // NaN
Number('aa') // NaN
Number(NaN) // NaN

若能成功转换为Number类型,isNaN返回false,否则返回true。

1
2
3
4
5
6
7
isNaN('')  // false
isNaN(null) // false
isNaN(true) // false
isNaN(false) // false
isNaN(undefined) // true
isNaN('aa') // true
isNaN(NaN) // true

Javascript中0 / 0返回的是NaN,而非0数值除以0返回的是Infinity

Number.isNaN()

判断传入的参数是否严格等于NaN(也就是===)

1
2
3
4
5
6
7
Number.isNaN('')  // false
Number.isNaN(null) // false
Number.isNaN(true) // false
Number.isNaN(false) // false
Number.isNaN(undefined) // false
Number.isNaN('aa') // false
Number.isNaN(NaN) // true

使用场景:判断某个运算的结果是否为NaN

1
2
3
4
function check(value) {
return Number.isNaN();
}
check(1 / 'test') // false