isNaN和Number.isNaN的区别

1、isNaN()

isNaN() 函数用于检查其参数是否是非数字值。

如果参数值为 NaN 或字符串、对象、undefined等非数字值则返回 true, 否则返回 false。

console.log(isNaN(null));            //false
console.log(isNaN(true));            //false
console.log(isNaN(false));           //false
console.log(isNaN(1));               //false
console.log(isNaN(undefined));       //true
console.log(isNaN("abc"));           //true
console.log(isNaN({}));              //true
console.log(isNaN(NaN));             //true

2、Number.isNaN()

Number.isNaN() 是 ECMAScript6 (ES6) 新特性。

Number.isNaN() 方法用于判断传递的值是否为 NaN,并且检查其类型是否为 Number。

如果值为 NaN 且类型为 Number,则返回 true,否则返回 false。

console.log(Number.isNaN(null));      //false
console.log(Number.isNaN(true));      //false
console.log(Number.isNaN(false));     //false
console.log(Number.isNaN(1));         //false
console.log(Number.isNaN(undefined)); //false
console.log(Number.isNaN("abc"));     //false
console.log(Number.isNaN({}));        //false
console.log(Number.isNaN(NaN));       //true

在 JavaScript 中,我们不能使用相等运算符 == 和 === 来判断一个值是否是 NaN,因为 NaN == NaN 和 NaN === NaN 都会返回 false。因此,必须要有一个判断值是否是 NaN 的方法。 和全局函数 isNaN() 相比,Number.isNaN() 不会自行将参数转换成数字,只有在参数是值为 NaN 的数字时,才会返回 true。

你可能感兴趣的:(javascript,javascript)