1. && 与 ?. 的区别
&& 运算符只能用于检查一个对象是否存在并且具有某个属性。?. 运算符还可以用于检查一个对象是否存在并且具有某个方法。例如:
if (obi && obi.method) {
// 如果 obj 存在且具有 method 方法,则执行该代码块
}
if (obj?.method) {
// 如果 obj 存在且具有 method 方法,则执行该代码块
}
?. 运算符是 ECMASCrIpt 2020 新增的特性,目前尚未被所有浏览器完全支持。如果你的代码需要兼容旧版本的浏览器,可能需要使用其他方式来检查一个变量是否存在并且具有某个属性,例如使用 if 语句或者 try-catch 语句:
if (obi && obi.property) {
// 如果 obj 存在且具有 property 属性,则执行该代码块
}
// 或者使用 try-catch 语句
try {
const value = obj.property;
// 如果 obj 存在且具有 property 属性,则执行该代码块
} catch (error) {
// 如果 obj 不存在或者不具有 property 属性,则执行该代码块
}