一、隐式转换
1.向Number类型的隐式转换
凡是有Number类型参与的减法、乘法、除法运算中,其他类型比如String类型、Boolean类型都会自动转为Number类型。不能转成对应数字的就是NaN;
加法运算中有字符串会比较特殊
var box = 100 - '70'; //30,'70'转成了数值70
var box = 100 - true; //99,true转成数值为 1
var box = 100 - null; //100,null转成了 0
var box = 100 - 'Lee'; //NaN,Lee转成了 NaN
2.向Boolean类型的转换
var hello = 'Hello World!';
if (hello) {
alert('如果条件为true,就执行我这条!');
} else {
alert('如果条件为false,就执行我这条!');
}
以下是其他类型转换成 Boolean 类型规则
数据类型 |
转换为true的值 |
转换为false的值 |
Boolean |
true |
false |
String |
任何非空字符串 |
空字符串 |
Number |
任何非零数字值(包括无穷大) |
0和NaN |
Object |
任何对象 |
null |
Undefined |
undefined |
加法运算中比较特殊,只要加法运算中出现了String类型,那么+号代表的是连接符,会被转成字符串。
var box = 100 + '100';//100100,字符串连接符,有字符串就不是加法
二、强制转换
var hello2 = Boolean(hello); //适用任何类型
alert(Number(true)); //适用任何类型
alert(parseInt('56.12')); // 56 将字符串转为整型。从第一位识别到不是数字为止,不识别小数点
alert(parseFloat('123.4.5')); //123.4 将字符串转为浮点类型。从第一位识别到不是数字为止,识别小数点
String(true);//true 是字符串类型 适用于任何类型。
toString()方法可以把值转换成字符串。
var box = 11;
var box = true;
alert(typeof box.toString());
toString()方法一般是不需要传参的,但在数值转成字符串的时候,可以传递进制参数。
var box = 10;
alert(box.toString());//10,默认输出
alert(box.toString(2));//1010,二进制输出
alert(box.toString(8));//12,八进制输出
alert(box.toString(10));//10,十进制输出
alert(box.toString(16));//a,十六进制输出
PS:如果值有toString()方法,则调用该方法并返回相应的结果;如果是null或者undefined,则返回"null"或者"undeinfed"。