js有六种原始类型:undefined、null、string、number、boolean、object(Array和Function都是特殊的Object),它们之间可以相互转换
Number类型
整数类型可以用四种进制表示,最常见的是10进制
- 10进制
- 16进制 以0x开头
- 8进制 以0开头,如果后面包含0-7以外的数字,视为是10进制
- 2进制 以0b开头,如果后面包含0-1以外的数字,会报错
浮点数,浮点数的保存空间是整数的两倍,所以对于小数点后为空,或者小数点后为0的浮点数,会直接转换为整数保存。
1.0
1.
如果整数位为空,可以省略,例如
.123
但是这种方法不推荐,可以采用科学计数法来表示浮点数
1.123e10
.123E10
javascript数字同样采用IEEE754数值的浮点计算,会出现舍入误差
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,返回false
类型转换
其它类型转换成boolean
undefined/null => false
"" => false
0/+0/-0/NaN => false
其余都转换成true
其它类型转换成数字
其它类型转换为数字有三个方法,Number()、parseInt()、parseFloat(),在变量前面加上+号等于调用Number方法
Number方法
null => 0
undefined => NaN
false => 0
true => 1
string:
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
parseInt方法
尽量解析,对于八进制,es3引擎会解析为8进制,es5引擎会忽略开头的0,为了减少这种歧义,可以为parseInt加上第二个参数,用来指定进制
注意:parseInt("")返回NaN
parseFloat
忽略第二个小数点
其它类型转换成string
除了null和undefined都有toString方法,如果不清楚是否是null和undefined,可以使用String()方法
toString方法
数字调用toString方法时可以加上参数,用来确定是转换成什么进制的字符串
String方法
如果该变量有toString方法,调用toString方法,包括object如果既有toString方法和valueOf方法,先调用toString方法。
如果null调用返回'null'
如果undefined调用返回'undefined'
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。