刚看完红宝书数据类型一节,把其中的摘要总结一下,以免以后有疑惑不好翻书
ECMAScript有6种简单数据类型(也称为原始类型): Undefined、Null、Boolean、Number、String和Symbol。Symbol(符号)是ECMAScript 6新增的。还有一种复杂数据类型叫Object(对象)。Object是一种无序名值对的集合
1.Undefined类型
Undefined类型只有一个值,就是特殊值undefined。当使用var或let声明了变量但没有初始化时,就相当于给变量赋予了undefined值。
注意:永远不用显式地给某个变量设置undefined值。字面值undefined主要用于比较,而且在ECMA-262第3版之前是不存在的。增加这个特殊值的目的就是为了正式明确空对象指针(null)和未初始化变量的区别
2.Null类型
Null类型同样只有一个值,即特殊值null。逻辑上讲,null值表示一个空对象指针,这也是给typeof传一个null会返回"object"的原因
undefined值是由null值派生而来的
null和undefined的推荐用法
即使null和undefined有关系,它们的用途也是完全不一样的。如前所述,永远不必显式地将变量值设置为undefined。但null不是这样的。任何时候,只要变量要保存对象,而当时又没有那个对象可保存,就要用null来填充该变量。这样就可以保持null是空对象指针的语义,并进一步将其与undefined区分开来
3.Boolean类型
不同类型与布尔值之间的转换规则
4.Number类型
Number类型使用IEEE754格式表示整数和浮点值(在某些语言中也叫双精度值)。不同的数值类型相应地也有不同的数值字面量格式
有3个函数可以将非数值转换为数值:Number()、parseInt()和parseFloat()。
Number()是转型函数,可用于任何数据类型。
parseInt()和parseFloat()两个函数主要用于将字符串转换为数值。
Number()函数基于如下规则执行转换。
5.String类型
转换为字符串有两种方式把一个值转换为字符串。首先是使用几乎所有值都有的toString()方法
toString()方法可见于数值、布尔值、对象和字符串值。(没错,字符串值也有toString()方法,该方法只是简单地返回自身的一个副本。)
null和undefined值没有toString()方法。
如果你不确定一个值是不是null或undefined,可以使用String()转型函数,它始终会返回表示相应类型值的字符串。String()函数遵循如下规则。
字符串插值
模板字面量最常用的一个特性是支持字符串插值,也就是可以在一个连续定义中插入一个或多个值,所有插入的值都会使用toString()强制转型为字符串,而且任何JavaScript表达式都可以用于插值