在使用JavaScript编写的时候,我们常常会遇到一些数据类型的转换问题,最近做项目也遇到这样的问题,因此在这里总结一下;
JavaScript类型转换分为两大类,显式转换与隐式转换
显式转换
显式转换可以很清楚的知道该数据转变成了什么数据类型,常见的方法有:
Number() 转换成数值,转换规则:
原值 | 转换结果 |
---|---|
null | 0 |
true | 1 |
false | 0 |
undefined | NaN |
string | 该类型转换参考string类型转数值 |
parseInt()
逐一解析字符,匹配到不能转换的字符就结束;若没有匹配到数值,则返回NaN,Null,undefined解析均为NaN
String()
可以将任意类型的值转化成字符串,ES6新增类型Symbol 除外;
Boolean()
将其它类型的值转化成布尔值;
false: “”(空字符串)、0、NaN、null、undefined;
true:非空字符串,不包括0的一切数值、所有对象
隐式转换
隐式转换是我们经常遇到的,可能在不知不觉中就使用了,却没太在意,例如:对两个值进行比较判断,或者进行算术运算;
比较判断自动转为布尔值:
会转换成false的值:undefined,null,false,0,NaN,’’(空字符串)
自动转换为字符串,最常见的就是连接符 +,只要有一个值为字符串,就会自动将结果转化成字符串;
自动转为数值的情况,运算符中除了+ 可能会转化成字符串外,其它均为数值