【JavaScript】 原始类型的初始化,字面量形式与new形式的差异。

在 JavaScript 中,原始类型(primitive types)包括 number, string, boolean, null, undefined 和 symbol(ES6 引入)。
对于这些类型,JavaScript 提供了两种主要的方式来创建或初始化值:字面量形式和 new 形式。

字面量形式

字面量形式是最直接的初始化方式,它直接给出值本身。例如:

  • 字符串:‘hello’
  • 数字:42
  • 布尔值:true

优点:

  • 更简单、更直观。
  • 性能更好,因为不需要额外的对象创建开销。

示例:

let str = 'hello';
let num = 42;
let bool = true;

new 形式

使用 new 关键字可以创建一个包装对象,这些包装对象分别是 String, Number, 和 Boolean 类型。例如:

  • 字符串:new String(‘hello’)
  • 数字:new Number(42)
  • 布尔值:new Boolean(true)

优点:

  • 创建的是一个对象,而不是原始类型。
  • 包装对象具有额外的方法和属性,可以通过原型链访问。
  • 可能会导致意料之外的行为,尤其是在进行比较操作时。

示例:

let strObj = new String('hello');
let numObj = new Number(42);
let boolObj = new Boolean(true);

主要差异

  1. 类型:
    • 字面量是原始类型。
    • new 形式的包装对象是引用类型。
  2. 内存分配:
    • 原始类型值存储在栈内存中。
    • 对象存储在堆内存中,并且变量持有指向该对象的引用。
  3. 行为:
    • 原始类型在赋值时传递的是值本身。
    • 对象在赋值时传递的是指向对象的引用。
  4. 性能:
    • 字面量形式通常更快,因为它不涉及对象创建过程。
  5. 方法和属性:
    • 原始类型没有额外的方法和属性。
    • 包装对象提供了更多的方法和属性。
  6. 相等性检查:
    • 使用 == 比较时,包装对象会被自动转换成原始类型。
    • 使用 === 比较时,原始类型和包装对象被认为是不同的。

注意事项

在大多数情况下,建议使用字面量形式来处理原始数据类型,以避免不必要的复杂性和潜在的错误。

使用 new 形式创建的包装对象通常只在需要利用某些内置对象方法时才使用,或者在旧的 API 中要求传入对象参数而非原始值的情况下使用。

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值