碰到一个很诡异的问题,isNaN('')返回false,但是parseInt('')返回NaN,说明空字符串在isNaN()方法中会被强制转换为数值0,isNaN()会首先尝试将这个参数转换为数值,然后才会对转换后的结果是否是NaN进行判断。因此,对于能被强制转换为有效的非NaN数值来说返回false值。但是isNaN()方法中很明显并不是用parseInt()强制转换,而是直接判断,空字符串直接用parseInt('')方法转换的返回值实际上NaN。
isNaN()常见的集中返回值:
// number
isNaN(NaN); // true
isNaN(undefined); // true
isNaN({}); // true
isNaN(true); // false
isNaN(null); // false
isNaN(37); // false
// strings
isNaN("37"); // false: