数字
JS中只有一个单一数值类型,内部表示为64位整数,(Java中的double)。没有单独分离出整数类型,所以1和1.0是相等的。
> 1 == 1.0
true
这样,完全避免了短整数溢出的问题及一大类因为数字类型导致的错误。
NaN
NaN是一个数值,表示一个不能产生正常计算结果的运算结果,NaN不等于任何值,包括它自己。
> typeof NaN
'number'
> NaN == NaN
false
> NaN !== NaN
true
可以用isNaN( number ) 来检测 NaN
> isNaN(NaN)
true
isNaN会隐式的将入参转换成数字,如果不能转换成数字(不能转数字的字符串,{},[] 等),那么也会返回NaN
> Number('ABC')
NaN
> isNaN('ABC')
true
可以利用NaN的特性 x !== x 来判断NaN,避免上述隐式转换的问题。
function myIsNaN(x) {
return x !== x;
}
Infinity
用0做除数会产生一个特殊值Infinity(无穷大)。
> 3/0
Infinity
正负无穷运算:无法得到运算结果
> Infinity - Infinity
NaN
比正无穷大的,还是正无穷
> Infinity + Infinity
Infinity
> 4 * Infinity
Infinity
参考:http://www.cnblogs.com/ziyunfei/archive/2012/09/19/2690866.html
书籍:JavaScript语言精粹