JavaScript可选链是什么_它如何简化对象属性访问

9次阅读

JavaScript 可选链(?.)用于安全访问嵌套属性、方法、数组索引及动态属性,遇 null/undefined 即短路返回 undefined;可与?? 搭配设默认值;不可用于赋值左端或链式调用中非可选部分。

JavaScript 可选链是什么_它如何简化对象属性访问

JavaScript 可选链(Optional Chaining)是一种安全访问嵌套对象属性的语法,它能避免因中间某层为 nullundefined 而抛出错误,让代码更简洁、健壮。

可选链的基本写法:用 ?. 替代 .

传统方式访问深层属性时,必须逐层检查是否为有效值,否则会报错:

const street = user && user.address && user.address.street;

用可选链后,一行就能搞定:

const street = user?.address?.street;

如果 usernullundefined,整个表达式直接返回 undefined,不会继续访问 address;同理,若 address 无效,也不会尝试读取 street

立即学习 Java 免费学习笔记(深入)”;

支持多种访问形式

可选链不仅适用于点号属性访问,还兼容以下场景:

  • 方法调用 obj?.method?.() —— 先检查 objmethod 是否存在,再执行
  • 数组索引 arr?.[index] —— 防止 arr 为空时访问索引报错
  • 动态属性名 obj?.[key] —— 安全读取计算出的属性名

配合空值合并操作符 ?? 设置默认值

可选链返回 undefined 时,常需提供兜底值。这时和空值合并操作符搭配非常自然:

const city = user?.address?.city ?? ‘ 未知城市 ’;

它只在左侧为 nullundefined 时才使用右侧值,比 || 更精准(例如不会把 0false'' 当作“空”)。

注意边界情况

可选链不是万能的,使用时需留意:

  • 不能用于赋值左侧:obj?.prop = value 会报语法错误
  • 不能跨可选链调用非可选方法:obj?.method()?.toString() 中,若 method() 返回 undefined,后面的 toString() 仍会报错
  • 不触发 getter 的副作用(如果有的话),因为访问被短路了
text=ZqhQzanResources