isNaN(xxxx) 判断xxx是否为非数字,
检测机制:如果xxx是数字型,返回false;
如果xxx是非数字类型,用Number(xxx) 转换,转换成数字,返回false,转换成NaN,返回true
这里要注意转换用的是 Number(xxx),而不是parseFloat() 或者 parseInt()
区别:
1 xxx为字符串类型
Number:出现任意非有效数字字符,结果就是NaN; 空字符串===>0
parseFloat() 或者 parseInt(): 从字符串最左边字符开始查找有效数字字符,并且转换为数字,但是一但遇到一个非有效数字字符,查找结束;空字符串===>NaN
2 xxx 为boolean
number: true ==>1 , false ===>0
parseInt: true ==>NaN , false ===>NaN
number('') 0 number(true) 1 number(false) 0 number("111111aaaa") NaN
parseInt('') NaN parseInt(true) NaN parseInt(false) NaN parseInt("11111aaa") 11111
综上: isNaN('') = false 因为Number('') = 0
isNaN(true) = false isNaN(false) = false
注意:
1 NaN 和 任何元素都是不相等的,包括它自己
NaN == NaN false
parseInt('') == NaN false
也就是说 不要写任何 xxxxx == NaN 的表达式,因为它永远是false