可选链操作符(?.)用于安全访问嵌套属性,避免读取null或undefined时抛错:如user?.profile?.name在user为null时返回undefined而非报错;适用于对象属性、方法调用、数组和动态属性访问,但仅处理null/undefined,不影响其他值或语法错误。

可选链操作符(?.)能在访问对象嵌套属性时,提前终止对 null 或 undefined 的读取,从而避免程序抛出错误。
基本用法:安全读取深层属性
当尝试访问一个可能不存在的对象属性时,传统方式容易报错:
const user = null;console.log(user.profile.name); // 报错:Cannot read property 'name' of null
使用可选链后,表达式会在遇到 null 或 undefined 时返回 undefined,而不是抛出错误:
console.log(user?.profile?.name); // 输出:undefined,不报错
应用场景举例
可选链适用于多种数据访问场景:
立即学习“Java免费学习笔记(深入)”;
- 对象属性链:obj?.a?.b?.c
- 方法调用前检查:obj?.method?.(),防止方法不存在时报错
- 数组元素访问:arr?.[0],当数组可能为空或未定义时安全读取
- 动态属性访问:obj?.[key]
注意事项
可选链只处理 null 和 undefined,其他值(如空字符串、0、false)仍会被正常求值。
console.log(obj?.a); // 输出:0,正常访问
它不会阻止后续的语法错误或类型错误,仅用于防止“读取 undefined 属性”的运行时错误。
基本上就这些。用好 ?. 能让你的代码更简洁,减少冗长的判断语句。










