返回

JS 原始值包装类型 & 隐式类型转换规则

前端

在 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 应用程序至关重要。通过使用这些概念,您可以控制值的类型转换并确保您的代码按预期运行。