在javascript中,数据类型的转换分为隐式转换和显式转换。
一、显式转换:把其它类型的数据转换为对应类型;
-
Number(data);将data转换为数值类型;
1) data包含字符或为undefined时,转换为Number后返回NaN;
2)data为null时,转换后返回0;
3)data为布尔值转换后,true返回1,false返回0; -
String();将任何类型的值转换为字符串;
-
Boolean(data);将data转换为布尔值类型;
当data为””、0、null、false、NaN、undefined转换后返回false,除了这些其他的值转换后通通返回true。
注意:当布尔值和数值进行
==
比较时,会先把布尔值转换为数字再比较,比如2 == true
是错误的,因为它会隐式把true转换为 1再进行比较,只有当1 == true
或者0 == false
才是正确的。
二、隐式转换:数据类型不相同时,做数据的运算,就会自动将两端的数据类型转换为对应类型。
隐式转换遵循String()、Number()和Boolean()的规则。
例如:
- 数值类型与字符串类型的转换
var a=1+”” ;
typeof a;// typeof检测数据类型
1加上空字符串后,a的数据类型隐式转换为string;
2.字符串类型转换为数值类型
var a=“123”*1;
typeof a; // typeof检测数据类型
字符“123”乘于(或除于或减)0时,a的数据类型隐式转换为Number;
- 布尔值类型和数值的转换
var a=true +0;
typeof a; // typeof检测数据类型
布尔值加上0后,先把布尔值隐式转换为Number后,在进行运算,a的数据类型返回Number。