Optional chaining in assignment LHS S1
中文标题:赋值左侧的可选链
提案概览
- 阶段: Stage 1
- 状态: 进行中
- ECMAScript 版本: —
- 同步时间: 2026年8月26日
- English original · 官方仓库
提案速览
该提案将可选链语法扩展到赋值运算符的左侧,使得仅当基对象不为 null 或 undefined 时才进行属性赋值。它涵盖了简单赋值、复合赋值以及 ??= 等逻辑赋值运算符。
Note
以下 README 来自上游仓库,其中的阶段或状态标注可能滞后;当前信息以提案概览为准。
可选链赋值
为赋值运算符左侧的可选链添加支持的提案:a?.b = c。
状态
- 提案负责人:Nicolò Ribaudo
- 阶段:1
- 幻灯片:
动机
你经常需要为一个对象的属性赋值,但前提是该对象确实存在。
标准的做法是使用 if 语句保护赋值:
语言提供了一种仅当对象确实存在时才_读取_其属性的方式(obj?.prop = value),而开发者必须记住相同的语法在赋值时并不受支持。
使用场景
参见 这个 gist,其中有此功能在 Babel 和 TypeScript 代码库中会有用的示例。
你可以通过搜索 if \((.*?)\)[\s\n]*\{?[\s\n]*\1\. 来查找项目中可能使用可选链的示例。这个正则表达式会产生误报和漏报,但它是一个可能的起点。
描述
本提案引入了以下语法: