?.
可选链操作符
- 通过连接的对象的引用或函数可能是 undefined 或 null 时,可选链操作符提供了一种方法来简化被连接对象的值访问。
- 可选链不能用于赋值
let obj = {
name:'xxx',
addr:{
city:'',
},
age:[18,19]
}
let town1 = obj.addr.town;
let town11 = obj.addr && obj.addr.town;
let town2 = obj.addr?.town;
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)