JavaScript 中有两种类型转换:隐式类型转换(强制类型转换)和显式类型转换。类型转换是将一个数据类型的值转换为另一个数据类型的值的过程。
隐式类型转换是 JavaScript 自动进行的类型转换,通常发生在操作符运算或比较时,以确保操作的值具有相同的数据类型。以下是一些常见的隐式类型转换的情况:
+ 运算符将字符串与其他数据类型相加时,其他数据类型会隐式转换为字符串。var num = 42;
var str = "The answer is: " + num; // 隐式将 num 转换为字符串
var str = "42";
var num = 10;
var result = str - num; // 隐式将 str 转换为数字
== 或 ===)时,JavaScript 会进行类型转换以便比较两个值。var num = 42;
var str = "42";
if (num == str) {
// 隐式将 str 转换为数字,然后比较
console.log("相等");
}
显式类型转换是通过编写代码来明确告诉 JavaScript 进行类型转换的过程。以下是一些常见的显式类型转换的方法:
var str = "42";
var num = parseInt(str); // 显式将字符串转换为整数
var num = 42;
var str = String(num); // 显式将数字转换为字符串
var str = "42";
var num = Number(str); // 显式将字符串转换为数字
var num = 42;
var isTrue = Boolean(num); // 显式将数字转换为布尔值
parseFloat()、String.fromCharCode() 等,用于不同的数据类型转换需求。undefined:
undefined 与其他数据类型进行隐式类型转换时,它会被转换为 undefined 或 NaN(如果是数学运算)。String(undefined) 转换为字符串,或者使用 Number(undefined) 转换为数字,结果都是 NaN。
null:
undefined 类似,当将 null 与其他数据类型进行隐式类型转换时,它会被转换为 null 或 0(如果是数学运算)。String(null) 转换为字符串,结果是 "null";使用 Number(null) 转换为数字,结果是 0。
0:
0 在隐式类型转换中通常被视为假值(false),但在数学运算中会保持为 0。String(0) 转换为字符串 "0";Boolean(0) 转换为 false;Number(0) 保持为 0。
空字符串 '':
String('') 转换为空字符串 "";Boolean('') 转换为 false;Number('') 转换为 0。
需要注意的是,在 JavaScript 中,布尔上下文中的假值包括 undefined、null、0、空字符串 ''、NaN 和 false。在条件语句(如 if、while)中,它们会被视为假值,其他所有值都被视为真值。这是 JavaScript 中的类型转换规则的一部分。