总结JavaScript中简单数据类型的互相转换

93 阅读3分钟

刚看完红宝书数据类型一节,把其中的摘要总结一下,以免以后有疑惑不好翻书

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类型

不同类型与布尔值之间的转换规则

image.png

4.Number类型

Number类型使用IEEE754格式表示整数和浮点值(在某些语言中也叫双精度值)。不同的数值类型相应地也有不同的数值字面量格式

有3个函数可以将非数值转换为数值:Number()、parseInt()和parseFloat()。

Number()是转型函数,可用于任何数据类型。

parseInt()和parseFloat()两个函数主要用于将字符串转换为数值。

Number()函数基于如下规则执行转换。

image.png

5.String类型

转换为字符串有两种方式把一个值转换为字符串。首先是使用几乎所有值都有的toString()方法

toString()方法可见于数值、布尔值、对象和字符串值。(没错,字符串值也有toString()方法,该方法只是简单地返回自身的一个副本。)

null和undefined值没有toString()方法

如果你不确定一个值是不是null或undefined,可以使用String()转型函数,它始终会返回表示相应类型值的字符串。String()函数遵循如下规则。

image.png

字符串插值

模板字面量最常用的一个特性是支持字符串插值,也就是可以在一个连续定义中插入一个或多个值,所有插入的值都会使用toString()强制转型为字符串,而且任何JavaScript表达式都可以用于插值