JS中的 ?. ?? ??=

1.可选链(?.)
    /*
      只有当a存在,同时a具有name属性的时候,才会把值赋给b,
      否则就会将undefined赋值给b.重要的是,不管a存在与否,这么做都不会报错.
    */
    let a;
    let b = a?.name;//undefined
    
    const arr = [{ name: "ww" }, { name: "qq" }];
    console.log(arr?.[0]);// {name: 'ww'}
2.空值合并运算符(??)
    let a = null;
    let c = { name: 'ww' };
    let b = a ?? c;// {name: 'ww'}
    //如果a等于null或者undefined,那么b=c,否则b=a
3.空值赋值运算符(??=)
    /*
       当??=左侧的值为null、undefined的时候,才会将右侧赋值给左侧,否则不改变原来的值
    */
    let b = 'hello';
    let a = 0;
    let c = undefined;  
    let d = null
    console.log(b ??= a);//hello
    console.log(c ??= d);//null  

4.逻辑或赋值 (x ||= y)

/*
运算符仅在 x 为假时才赋值。
*/
 
const obj = {
  name: '',
  age: 0
}
 
obj.name ||= 'fatfish'
obj.age ||= 100
 
console.log(obj.name, obj.age) // fatfish 100

5.逻辑与赋值(&&=)

/*
逻辑与赋值 (x &&= y) 运算符仅在 x 为真时才赋值。与逻辑或赋值 (||=) 相反,只有 x 为真时才会正确赋值。
 
*/
 
const obj = {
  name: 'fatfish',
  age: 100
}
 
obj.name &&= 'medium' // medium
obj.age &&= 1000 // 1000
console.log(obj.name, obj.age) // medium 1000
 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值