JavaScript数据类型转换小记
JavaScript里的数据类型是可以有办法相互转换的,我们可以用以下方法分别将其他类型转换为字符串、布尔值以及数字。
1. 如何将其他类型转化为字符串
1.1. x.toString()

用这种方法数字和布尔值回返回字符串,对象返回 "[object Object]",而 null 和 undefined 会报错显示无法转换类型
1.2. String(x)
更好的方法是直接用 String() 这个全局变量

这种方法可以将任何数据类型转化为字符串而不报错
1.3. x + ''
老司机有更好的方法

这种方法利用 + 会让与字符串相加的运算子转变为字符串的特点
加法运算符是在运行时决定,到底是执行相加,还是执行连接。也就是说,运算子的不同,导致了不同的语法行为,这种现象称为“重载”(overload)
值得一提的是,只有加分运算符有这个特点,其他运算符会把运算子均转变为数值后运算。
2. 任意类型转为布尔
2.1. Boolean(x)
与字符串一样,布尔也有相应的全局变量函数 Boolean() 将其他类型转化为布尔值

其中要注意的是空字符串是 false 而空格是 true,事实上,只有以下五个值转换结果是 false,它们在JS里称为 falsy(加上 false 和 "" 就是七个)

2.2. !!x
另一种更快的方法是用 !!x

3. 任意类型转数字
3.1. Number(x)

3.2. parseInt(x) MDN
parseInt(x) 主要用来将字符串等转换为整数,它可以设定转换的进制,一般推荐不转换成其他进制时,也写上parseInt(x,10)表示转换成十进制,避免歧义

当 parseInt(x) 遇到不能转换的类型即停止转换
3.3. parseFloat(x) MDN
主要用来将字符串等转换为浮点数
3.4. x - 0

这个方法其实在 1.3 提到了,除加法运算符会有‘重载’现象外,其他运算符不会,那么当一个类型减去0当然会返回其对应的数值了。
3.5. + x

注意这种方法其实和 x - 0 原理相似,其并不是取绝对值
本文主要用于个人学习使用。