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

JavaScript中对象展开undefined的行为是否属标准定义?

对象展开...undefined的行为定义

这个行为是ECMAScript标准明确定义的,不属于未定义行为(UB)。

根据ECMAScript规范,对象展开语法处理右侧表达式时,会执行以下逻辑:

  • 先对右侧表达式求值,得到对应的值
  • 如果该值是null或undefined,则将其视为空对象进行展开操作
  • 展开空对象不会向目标对象添加任何属性,也不会抛出错误

结合你的示例代码:

const x = my?.property?.that?.does?.not?.exist // undefined
const y = { foo: 42, ...x }

当x为undefined时,...x的展开操作不会给y添加任何额外属性,最终y的值就是{ foo: 42 },这个结果完全符合标准的预期设计。

这种处理方式是规范有意设计的,目的是让对象展开语法在处理可能为null/undefined的变量时更健壮,无需额外添加空值判断即可安全使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:20:56