js中.?、??、??=的用法和含义

· ?. 后面跟不存在的属性 也不会报错,返回 undefined // 可选链(.?)
· ?? 赋值给前面,当前面的值不存在时 // 空值合并运算符(??)
· 左侧为null、undefined的时候,才会将右侧的值赋值给左侧 ??= // 空值赋值运算符(??=)

let a = 0;
let c = { name:'buzhimingqianduan' }

if(!!a || a === 0 ){
    b = a;
}else{
    b = c;
}

对就是上面那个例子,当我们想判断一个值存在,但是它等于0的时候,我们也需要当作它存在,于是就有了上面那样的例子,其实我们还可以这样做

let b;
let a = 0;
let c = { name:'buzhimingqianduan' }

b = a ?? c;

`
上面的例子,当a除了undefined、或者null之外的任何值,b都会等于a,否则就等于c.

和上面的例子类似
let b = '你好';
let a = 0
let c = null;
let d = ’123‘
b ??= a;  // b = “你好”
c ??= d  // c = '123'

当??=左侧的值为null、undefined的时候,才会将右侧变量的值赋值给左侧变量.其他所有值都不会进行赋值.同样在一些场景下,可以省略很多代码.

趣味问答时间:
let a;
let b = "不知名前端"
let c = null;
let d = 0;
let e;

e ??= a?.b ?? c ?? d?.a ?? b;
console.log(e)

`

你可能感兴趣的:(js中.?、??、??=的用法和含义)