/*
只有当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