类型转换
类型转换就是指将其他的数据类型,转换为String
、Number
或 Boolean
1.转换为String
方式一(强制类型转换):
调用被转换数据的toString()
方法
var a = 123;
a = a.toString();
这个方法不适用于
null
和undefined
。由于这两个类型的数据中没有方法,所以调用toString()
时会报错。
方式二(强制类型转换):
调用String()
函数
var a = 123;
a = String(a);
- 对于Number、Boolean、String都会调用他们的toString()方法来将其转换为字符串
- 对于null值,直接转换为字符串"null"。对于undefined直接转换为字符串"undefined"
方式三(隐式的类型转换):
为任意的数据类型拼接一个空串: + ""
var a = true;
a = a + "";
2.转换为Number
方式一(强制类型转换):
调用Number()
函数
var s = "123";
s = Number(s);
转换的情况:
- 字符串 => 数字
- 如果字符串是一个合法的数字,则直接转换为对应的数字
- 如果字符串是一个非法的数字,则转换为
NaN
- 如果是一个空串或纯空格的字符串,则转换为
0
- 布尔值 => 数字
true
转换为1
false
转换为0
- 空值 => 数字
null
转换为0
- 未定义 => 数字
undefined
转换为NaN
方式二(强制类型转换):
调用parseInt()
或parseFloat()
- 这两个函数专门用来将一个字符串转换为数字的
- 如果对
非String
使用,它会先将其转换为String
然后在操作 - 可以将一个字符串中的
有效的
整数位或小数位提取出来,并转换为Number
var a = "123.456px";
a = parseInt(a); //123
a = parseFloat(a);//123.456
方式三(隐式的类型转换):
使用一元运算符 +
来进行隐式的类型转换
var a = "123";
a = +a;
2.转换为布尔值
方式一(强制类型转换):
使用Boolean()
函数
var s = "false";
s = Boolean(s); //true
转换的情况:
- 字符串 => 布尔
除了空串
其余全是true
- 数值 => 布尔
除了0和NaN
其余的全是true
- null、undefined => 布尔
- 都是
false
- 都是
- 对象 => 布尔
- 都是
true
- 都是
方式二(隐式类型转换):
为任意的数据类型做两次非运算 !
,即可将其转换为布尔值
var a = "hello";
a = !!a; //true