目录函数
NaN == NaN NaN === NaN // falseprototype
[NaN ].includes(NaN ) // truecode
若是传入的参数不是Number
类型,会先调用Number
方法 转换为Number
类型ip
isNaN(NaN); // true isNaN(undefined); // true isNaN({}); // true isNaN([]) // false isNaN(['1234.23']) // false isNaN(true); // false isNaN(null); // false isNaN(37); // false // strings isNaN("37"); // false: 能够被转换成数值37 isNaN("37.37"); // false: 能够被转换成数值37.37 isNaN("37,5"); // true isNaN('123ABC'); // true: parseInt("123ABC")的结果是 123, 可是Number("123ABC")结果是 NaN isNaN(""); // false: 空字符串被转换成0 isNaN(" "); // false: 包含空格的字符串被转换成0 // dates isNaN(new Date()); // false isNaN(new Date().toString()); // true isNaN("blabla") // true: "blabla"不能转换成数值 // 转换成数值失败, 返回NaN
NaN
的加强版本,和全局函数 isNaN()
相比,该方法不会强制将参数转换成数字,只有在参数是真正的数字类型,且值为 NaN
的时候才会返回 true
。字符串
Number.isNaN(NaN); // true Number.isNaN(Number.NaN); // true Number.isNaN(0 / 0) // true // 下面这几个若是使用全局的 isNaN() 时,会返回 true。 Number.isNaN("NaN"); // false,字符串 "NaN" 不会被隐式转换成数字 NaN。 Number.isNaN(undefined); // false Number.isNaN({}); // false Number.isNaN("blabla"); // false // 下面的都返回 false Number.isNaN(true); Number.isNaN(null); Number.isNaN(37); Number.isNaN("37"); Number.isNaN("37.37"); Number.isNaN(""); Number.isNaN(" ");
参考:get