返回
JS 原始值包装类型 & 隐式类型转换规则
前端
2024-01-12 11:01:39
在 JavaScript 中,原始值类型包括数字、字符串、布尔值、undefined 和 null。这些值是不可变的,这意味着它们不能被修改。然而,可以通过创建原始值包装类型来间接地修改它们。
原始值包装类型
原始值包装类型是 JavaScript 中的对象,它们封装了原始值。有以下几种原始值包装类型:
- Number 对象:封装数字
- String 对象:封装字符串
- Boolean 对象:封装布尔值
要创建原始值包装类型,可以调用相应对象的构造函数,并将原始值作为参数传递。例如:
const num = new Number(10);
const str = new String("Hello World");
const bool = new Boolean(true);
隐式类型转换规则
JavaScript 中存在隐式类型转换规则,当进行某些操作时,会自动将一种类型转换为另一种类型。以下是一些常见的隐式类型转换规则:
- 数字和字符串相加时,数字会被转换为字符串。
- 数字和布尔值相加时,布尔值会被转换为数字。
- 当布尔值与其他类型的值进行比较时,布尔值会被转换为数字(true 为 1,false 为 0)。
- 当 null 或 undefined 与其他类型的值进行比较时,它们会被转换为 false。
装箱 & 拆箱
装箱 是将原始值转换为原始值包装类型。这可以通过调用对象的构造函数或使用 new 操作符来实现。
拆箱 是将原始值包装类型转换为原始值。这可以通过使用 valueOf() 方法或隐式类型转换规则来实现。
实例
以下是一个示例,展示了原始值包装类型、隐式类型转换和装箱拆箱:
const num = 10;
const str = "Hello World";
// 装箱
const numObj = new Number(num);
const strObj = new String(str);
// 隐式类型转换
const sum = num + str; // "10Hello World"
const bool = numObj > strObj; // false
// 拆箱
const numValue = numObj.valueOf(); // 10
const strValue = strObj.toString(); // "Hello World"
结论
理解原始值包装类型和隐式类型转换规则对于编写健壮的 JavaScript 应用程序至关重要。通过使用这些概念,您可以控制值的类型转换并确保您的代码按预期运行。