JS中的NaN和isNaN

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

你可能感兴趣的:(H5开发)