JS的运算符以及某些内置函数,会自动进行数据类型的转换,方便计算,即隐式转换数据类型;
但是很多时候,我们希望可以手动控制数据类型的转换,即显示转换数据类型;
转换为字符串
String()函数
使用String(value)
函数,将value转换为字符串类型;
toString()方法
也可以调用自带的toString()
方法,转换为字符串类型;
但是,注意:
-
null和undefined没有
toString()
方法,调用会报错,此时只能用String()
函数来转为字符串; -
无论是
String()
函数,还是toString
方法;无论传入的是基础数据类型,还是对象,在调用他们的时候,都不会改变原本的变量的数据类型,而是新开辟一个内存,将原本的变量的值,转换为字符串类型以后再存储进新开的内存里,然后返回这个新开的内存的地址;所以我们需要用变量去接收这个返回值,如下图所示:
转换为数值
Number()函数
使用Number(value)
函数,将value转换为数值类型;
非数值转换为数字的转换规则如下:
- null = 0
- undefined = NaN
- true = 1
- false = 0
- 字符串:先去掉首尾空白字符(空格,换行符,制表符等),然后
- 空串 = 0
- 数字字符串转为数字,如"1234" = 1234
- 含非数字的字符串,转为NaN,如"1234hello" = NaN
parseInt()函数 与 parseFloat()函数
还有两个专门针对字符串转换为数字的函数,parseInt()
和parseFloat()
:
-
顾名思义,
parseInt()
解析为整数,parseFloat()
解析为浮点数; -
注意,他们传入的参数必须是字符串或者数字,除此以外的其他数据类型,都会返回NaN;
-
以
parseInt()
为例,来说明一下他们解析字符串的顺序:- 先去掉首尾空白字符
- 再按照顺序依次读取每一个字符
- 读到非数字字符,直接返回NaN;否则读完,返回数字,如下图所示:
转换为布尔值
Boolean()函数
使用Boolean(value)
函数,将value转换为布尔值;
转换为布尔值的转换规则如下:
-
表示”无“的概念的值,都转换为false,具体有:0、空字符串、null、undefined、NaN
-
除此以外的其他值,都转换为true