js有六种原始类型:undefined、null、string、number、boolean、object(Array和Function都是特殊的Object),它们之间能够相互转换javascript
整数类型能够用四种进制表示,最多见的是10进制java
浮点数,浮点数的保存空间是整数的两倍,因此对于小数点后为空,或者小数点后为0的浮点数,会直接转换为整数保存。es5
1.0 1.
若是整数位为空,能够省略,例如code
.123
可是这种方法不推荐,能够采用科学计数法来表示浮点数对象
1.123e10 .123E10
javascript数字一样采用IEEE754数值的浮点计算,会出现舍入偏差ip
0.1 + 0.2 === 0.3 ? false
有几个特殊的值字符串
Number.MAX_VALUE Number.MIN_VALUE Number.NEGATIVE_INFINITY Number.POSITIVE_INFINITY -Infinity Infinity NaN
提供了全局的isNaN方法来判断一个数是不是NaN,注意isNaN会尝试将这个变量转换成数字,若是不能转换成数字,直接返回为true,能转换成数字,不是NaN,返回falsestring
undefined/null => false "" => false 0/+0/-0/NaN => false 其他都转换成true
其它类型转换为数字有三个方法,Number()、parseInt()、parseFloat(),在变量前面加上+号等于调用Number方法it
null => 0 undefined => NaN false => 0 true => 1
string:io
1.只包含'整数'
2.只包含'浮点数'
3.只包含'十六进制数'
4.只包含'二进制数'
5.不识别'八进制',会忽略前导的0
转换成数字
6.其他状况都为NaN
'23' => 23 '1.23' => 1.23 '1.' => 1 '1e2' => 100 '0xa' => 10 '0x10' => 2
object:
先调用valueOf,若是valueOf返回值为原始值,则转换成数字,若是为对象,返回NaN,不会再对返回的对象进行valueOf和toString的解析,若是没有valueOf,则调用toString
尽可能解析,对于八进制,es3引擎会解析为8进制,es5引擎会忽略开头的0,为了减小这种歧义,能够为parseInt加上第二个参数,用来指定进制
注意:parseInt("")返回NaN
忽略第二个小数点
除了null和undefined都有toString方法,若是不清楚是不是null和undefined,能够使用String()方法
数字调用toString方法时能够加上参数,用来肯定是转换成什么进制的字符串
若是该变量有toString方法,调用toString方法,包括object若是既有toString方法和valueOf方法,先调用toString方法。若是null调用返回'null'若是undefined调用返回'undefined'