You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

右操作数为undefined时Nullish coalescing operator(??)是否有使用必要?

空值合并运算符??右操作数设为undefined的适用场景

绝大多数场景下a ?? undefined属于冗余写法,返回结果和直接使用a完全一致,没有实际业务价值。但在少数和工程规则、类型处理相关的特定场景下,确实存在合理的使用场景:

  • 覆盖自动生成代码的默认兜底逻辑
    部分代码生成工具、低代码平台的导出逻辑、框架脚手架的模板代码,会默认给所有可能为null/undefined的变量补充??兜底逻辑,默认值一般是''、0这类基础值。如果你明确要求兜底结果就是undefined,就需要手动把自动生成的右值修改为undefined,属于适配自动生成规则的特殊写法,不是故意编写冗余代码。
  • 适配TypeScript显式类型推导需求
    当你使用的tsconfig开启了严格的类型推导规则时,部分场景下直接赋值可能出现类型推导不符合预期的问题:比如第三方库返回的变量类型标注为number | undefined,但实际ts推导时可能会隐式丢掉undefined类型,手动添加?? undefined可以强制让推导结果显式包含undefined,避免后续赋值、传参时出现不必要的类型报错,这种写法在处理类型标注不完善的第三方依赖、编写复杂类型体操逻辑时偶尔会用到。
  • 绕开ESLint规则校验
    不少团队的ESLint规则会禁止直接把可能为null/undefined的变量赋值给其他变量,要求必须添加空值兜底逻辑。如果你的业务逻辑确实需要保留undefined的返回结果,就可以通过?? undefined的写法满足ESLint规则要求,不需要单独加eslint-disable注释污染代码。

注意:上述场景都属于工程规则适配层面的妥协写法,正常手写业务代码时完全不需要这么写,会大幅降低代码可读性。

相关示例代码:

const undefValue = undefined;
const useless = undefValue ?? undefined

内容的提问来源于stack exchange,提问作者Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:54:05