Number.isNaN与isNaN最大的区别是,Number.isNaN不存在类型转换的行为。
console.log(isNaN('测试')) //true
console.log(Number.isNaN('测试')) //false
console.log(Number.isNaN(1)) //false
console.log(Number.isNaN(NaN)) /true
上面代码中,都是传入字符串“测试”,但为什么结果不同?原因在于:
isNaN会通过Number方法,试图将字符串"测试"转换成Number类型,但转换失败了,因为 Number(‘测试’) 的结果为NaN ,所以最后返回true。
Number,isNaN()方法的判断过程︰首先判断传入的参数是否为数值类型,
如果判断为true再使用isNaN()方法进行判断。
为false就直接返回flase.