?.和??使用
1、可选链操作符( ?. )
?.允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?. 操作符的功能类似于 . 链式操作符,不同之处在于,在引用为空(null 或者 undefined) 的情况下不会引起错误,该表达式短路返回值
obj = {
name:‘小王’,
age:‘22’
}
let objTwo = obj?.year
console.log(year) // undefined
2、空值合并操作符(??)
??是一个逻辑操作符,当左侧的操作数为 null 或者 undefined 时,返回其右侧操作数,否则返回左侧操作数
const nullValue = null;
const valA = nullValue ?? “valA 的默认值”;
console.log(valA); // “valA 的默认值”;
3、合并使用
此外空值合并操作符也可以在使用可选链时设置一个默认值,如下:
let customer = {
name: “小九”,
details: { age: 18 }
};
let customerCity = customer?.city ?? “暗之城”;
console.log(customerCity); // “暗之城”