1.1 显式类型转换
在JavaScript中,类型转换是将一个数据类型的值转换为另一个数据类型的过程。转换有两种类型:显式(手动)和隐式(自动)。理解这些过程对于预防错误和创建可预测的代码很重要。
显式转换,也称为手动转换,是使用JavaScript内建的函数和方法进行的转换。在这种转换中,程序员明确指定要将一种数据类型转换为另一种类型。
显式转换的主要方法:
1. 转换为字符串
- 方法
String(value)
: 将值转换为字符串
JavaScript
let num = 123;
let str = String(num);
console.log(typeof str); // "string"
value.toString()
: 对象的方法,将值转换为字符串
JavaScript
let bool = true;
let str = bool.toString();
console.log(typeof str); // "string"
2. 转换为数字
Number(value)
: 将值转换为数字
JavaScript
let str = "456";
let num = Number(str);
console.log(typeof num); // "number"
parseInt(value, base)
: 将字符串转换为整数。参数base
指示进制
JavaScript
let str = "123";
let num = parseInt(str, 10);
console.log(typeof num); // "number"
parseFloat(value)
: 将字符串转换为浮点数
JavaScript
let str = "123.45";
let num = parseFloat(str);
console.log(typeof num); // "number"
3. 转换为布尔值
Boolean(value)
: 将值转换为布尔值
JavaScript
let str = "";
let bool = Boolean(str);
console.log(typeof bool); // "boolean"
1.2 隐式类型转换
隐式转换,也称为自动或隐式转换,是JavaScript在对不同类型的数据进行操作时自动执行的。隐式转换可能导致意外结果,因此需要理解并谨慎使用。
1. 转换为字符串
重要!
在将任何对象与字符串相加时,JavaScript会尝试将其转换为字符串。
例子:
JavaScript
let result = "The number is " + 123;
console.log(result); // "The number is 123"
2. 转换为数字
重要!
当使用任何算术运算符(不包括+)与包含数字的字符串时。
JavaScript
let result = "123" - 0;
console.log(result); // 123 (数字)
这在实践中的效果:
JavaScript
let result = "123" - 10;
console.log(result); // 113 (数字)
let result2 = "123" + 10;
console.log(result2); // 12310 (字符串)
3. 转换为布尔值
在逻辑上下文中使用值(条件运算符、循环等)。
JavaScript
let value = "hello";
if (value) {
console.log("Value is truthy"); // 输出: "Value is truthy"
}
在逻辑上下文中的转换示例:
false
,0
,""
(空字符串),null
,undefined
, 和NaN
被认为是假的(false
)值- 其他所有值都被认为是真的(
true
)
JavaScript
if ("") {
console.log("This won't be logged.");
} else {
console.log('"" is considered false in a boolean context.');
}
// '"" is considered false in a boolean context.'
1.3 隐式转换的例子
带有算术运算的例子:
JavaScript
let width = "100";
let height = "200";
let area = Number(width) * Number(height); // 显式转换
console.log(area); // 20000
let perimeter = (+width) + (+height); // 使用一元加号进行显式转换
console.log(perimeter); // 300
逻辑上下文的例子:
JavaScript
let userInput = ""; // 空字符串
if (!userInput) {
console.log("用户未输入数据。"); // 隐式地将字符串转换为布尔值
}
组合类型的例子:
JavaScript
let value = "10";
let increment = 5;
let result = value + increment; // 隐式地将数字转换为字符串
console.log(result); // "105"
result = Number(value) + increment; // 显式地将字符串转换为数字
console.log(result); // 15
GO TO FULL VERSION