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 中的类型转换规则的一部分。