JavaScript可选链(?.)用于安全访问嵌套属性、方法、数组索引及动态属性,遇null/undefined即短路返回undefined;可与??搭配设默认值;不可用于赋值左端或链式调用中非可选部分。
JavaScript可选链(Optional Chaining)是一种安全访问嵌套对象属性的语法,它能避免因中间某层为 null 或 undefined 而抛出错误,让代码更简洁、健壮。
?. 替代 .
传统方式访问深层属性时,必须逐层检查是否为有效值,否则会报错:
const street = user && user.address && user.address.street;用可选链后,一行就能搞定:
const street = user?.address?.street;如果 user 是 null 或 undefined,整个表达式直接返回 undefined,不会继续访问 address;同理,若 address 无效,也不会尝试读取 street。
访问形式可选链不仅适用于点号属性访问,还兼容以下场景:
obj?.method?.() —— 先检查 obj 和 method 是否存在,再执行arr?.[index] —— 防止 arr 为空时访问索引报错obj?.[key] —— 安全读取计算出的属性名?? 设置默认值可选链返回 undefined 时,常需提供兜底值。这时和空值合并操作符搭配非常自然:
它只在左侧为 null 或 undefined 时才使用右侧值,比 || 更精准(例如不会把 0、false、'' 当作“空”)。
可选链不是万能的,使用时需留意:
obj?.prop = value 会报语法错误obj?.method()?.toString() 中,若 method() 返回 undefined,后面的 toString() 仍会报错