先想一下下面的结果
console.log(Number.isNaN('a123'))
console.log(Number.isNaN(123));
起因就是看到Number.isNaN然后顺手自己运行了一下发现并不是按照我想的输出的 本以为第一条语句会返回true 第二条语句会返回false
结果
再来
console.log(Number.isNaN('abc')) //false
console.log(isNaN('abc')); //true
所以这两个方法是不一样的,Number.isNaN方法注释是这样写的:
/**
* Returns a Boolean value that indicates whether a value is the reserved value NaN (not a
* number). Unlike the global isNaN(), Number.isNaN() doesn't forcefully convert the parameter
* to a number. Only values of the type number, that are also NaN, result in true.
* @param number A numeric value.
*/
所以全局的isNaN是先把参数转换成number类型,只有转换失败的参数才会返回为true
而Number.isNaN方法会直接判断参数是否===NaN,是的话才回返回true