JS种?.(可选链) ??(空值合并) ??=(逻辑空赋值)运算符的介绍及使用

本文介绍了JavaScript中三个新的运算符:可选链?.、空值合并??和逻辑空赋值??=。可选链运算符允许安全访问嵌套对象的属性,即使对象不存在;空值合并运算符提供默认值以防属性缺失;逻辑空赋值运算符在值为null或undefined时进行赋值。这些运算符提高了代码的简洁性和健壮性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 JavaScript 中,当我们访问一个对象的属性时,如果该属性不存在,JavaScript 会抛出一个 TypeError 错误。
TypeError: Cannot read properties of null (reading 'xxx')

为了避免这种错误,ECMAScript 2020 引入了三个新的运算符:可选链运算符 ?.、空值合并运算符 ??和逻辑空赋值运算符 ??=

  1. 可选链运算符 ?.
    可选链运算符是一个简洁而有效的解决方案,用于检查给定属性是否存在。例如,如果你正在尝试访问嵌套在其他对象中的属性,并且该对象不存在,则可选链运算符允许你安全地避免错误。

     const person = {
      id: 10086,
      name: '阿凯',
      sex: '男',
      desc: null 
     };
     
     // 直接做法
     console.log(person.desc.age); //TypeError
     console.log(person.desc && person.desc.age); //null
     
     // 使用可选链
     console.log(person.desc?.age) // undefined
     
     // 使用深度可选链
     console.log(person.desc?.address?.city); //undefined
     
     // 函数可选链
     console.log(person.fun?.()); //undefined
     ```
    
    
  2. 空值合并运算符 ??
    空值合并运算符允许你为 nullundefined 的值提供默认值。这个运算符在许多情况下都很有用,例如当你尝试从对象中获取属性时,但该属性不存在。

    const person = {
      id: 10086,
      name: '阿凯',
      sex: '男',
      desc: null  
    };
    
    // 左侧值存在
    console.log(person.desc ?? person.name) // 阿凯
    
    // 左侧值为undefined
    console.log(person.skill ?? person.name) // 阿凯
    
  3. 逻辑空赋值运算符 ??=
    逻辑空赋值运算符允许你在左侧的值为 nullundefined 时,对其进行赋值。它可以帮助你简化代码,并减少检查左侧值是否为空的代码行。

    const person = {
      id: 10086,
      name: '阿凯',
      sex: '男',
      desc: null  
    };
    
    // 左侧值存在
    console.log(person.id ??= person.name) // 10086
    
    // 左侧值为null
    console.log(person.desc ??= 'default output') // default output
    
    // 左侧值为undefined
    console.log(person.skill ??= 'default output') // default output
    

总结:使用这些新的运算符可以使代码更简洁、更可读、更健壮,并减少在 JavaScript 中的错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值