· ?. 后面跟不存在的属性 也不会报错,返回 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)
`
网友评论