可选链操作符 ?.
是 ES2020 引入的一个非常有用的特性,它允许你安全地访问嵌套对象的属性,而无需验证每个引用是否有效。
可选链操作符的语法是在可能为 null
或 undefined
的属性前加上 ?.
:
obj?.prop // 访问属性
obj?.[expr] // 通过表达式访问属性
func?.(...args) // 调用可能不存在的函数
传统方式需要多层检查:
let street = user && user.address && user.address.street;
使用可选链:
let street = user?.address?.street;
// 传统方式
let result = obj.method && obj.method();
// 可选链方式
let result = obj.method?.();
let firstItem = arr?.[0];
??
let name = user?.name ?? 'Anonymous';
?.
前面的值是 null
或 undefined
,表达式会短路并返回 undefined
null
/undefined
的地方使用obj?.prop = value
是语法错误delete
一起使用:delete obj?.prop
是允许的可选链大大简化了深层嵌套对象的访问代码,减少了冗余的 null/undefined 检查,使代码更加简洁易读。