let user = {}; // 一个没有 "address" 属性的 user 对象
console.log(user.address.street);
// 当对象中不存在"address" 属性时,
//控制台会报Error!而不是undefined
//通常我们希望出现的是undefined
如何实现这一点?
a.使用&&修饰符
let user = {}; // user 没有 address 属性
alert( user.address && user.address.street && user.address.street.name ); // undefined(不报错)
b.使用可选链?.
let user = {}; // user 没有 address 属性
alert( user?.address?.street ); // undefined(不报错)
// 如果 document.querySelector('.elem') 的结果为 null,
//则这里不存在这个元素
let html = document.querySelector('.elem').innerHTML;
// 如果 document.querySelector('.elem') 的结果为 null,
//则会出现错误,实际我们希望出现的是null而不是error
可选链 ?. 不是一个运算符,而是一个特殊的语法结构。它还可以与函数和方括号一起使用。
例如,将 ?.() 用于调用一个可能不存在的函数。函数不存在,则运算停止,不报错