可选链操作符(Optional Chaining)
v?.meta?.rank === null
它允许你安全地访问对象的嵌套属性,而不会因为中间某个属性为 null 或 undefined 而导致程序抛出错误。
避免访问 null 或 undefined 时出错:传统的访问方式需要使用多重 if 或三元运算符来检查每一层是否为 null 或 undefined,这样写起来既繁琐又不易维护。使用 ?. 可以简化代码,使它更简洁、安全。
具体含义:
- v?.:如果 v 是 null 或 undefined,则返回 undefined,而不是抛出错误。如果 v 存在,才继续执行下一个操作。
- meta?.:如果 v.meta 是 null 或 undefined,则返回 undefined,而不是访问 rank属性时抛出错误。如果 v.meta 存在,才继续访问 rank。
- rank:如果 v.meta 存在,则直接访问 rank 属性。
可选链操作符 (?.) 不会改变原始数据。如果某一层是 null 或 undefined,它只是返回 undefined,不会修改数据本身。
它与 空值合并操作符(??) 配合使用时非常有用,后者可以确保当结果为 null 或 undefined 时返回默认值。
例如,使用 ?? 结合 ?. 来处理默认值:
const rank = v?.meta?.rank ?? 10; // 如果 v?.meta?.rank 为 null 或 undefined,则默认返回 10