js中 `?.` 可选链操作符与`??` 空值合并运算符 的用法

  • ?. 可选链操作符
    • 通过连接的对象的引用或函数可能是 undefined 或 null 时,可选链操作符提供了一种方法来简化被连接对象的值访问。
    • 可选链不能用于赋值
  let obj = {
    name:'xxx',
    addr:{
      city:'',
    },
    age:[18,19]
  }
  // 访问一个不存在  属性  报错
  let town1 = obj.addr.town;
  // 常规写法
  let town11 = obj.addr && obj.addr.town;
  // 不会报错 返回 undefined
  let town2 = obj.addr?.town;
  // 不会报错 返回 undefined
  let town3 = obj.getTown?.();
  // 可选链和表达式 
  let city1 = obj.addr?.['ci'+'ty'];
  // 可选链访问数组元素
  let city2 = obj.age?.[1];
  • ?? 空值合并运算符
    • 空值合并操作符(??)是一个逻辑操作符,当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数。
    • 与逻辑或操作符(||)不同,逻辑或操作符会在左侧操作数为假值时返回右侧操作数。也就是说,如果使用 || 来为某些变量设置默认值,可能会遇到意料之外的行为。
    • 不能与 AND 或 OR 操作符共用
  let name = null ?? "小黑";
  console.log(name) // "小黑";
  let age = 0 ?? 18;
  console.log(age) // 0;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值