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

JavaScript能否用单行代码实现空值合并赋值后设置对象属性?

单行实现空值检查并赋值子属性

当然可以,有几种简洁的单行写法能实现和你原有代码完全一致的效果,而且会保留a.b原有的数据:

最贴合原有逻辑的写法

const a = {};
(a.b ??= {}).c = 1;
console.log(a); // 输出 { b: { c: 1 } }

原理说明

a.b ??= {}是ES2020引入的空值合并赋值运算符,它会先判断a.b是否为null或undefined:

  • 如果是,就给a.b赋值为空对象;
  • 如果不是,就保留a.b原有的值。

这个表达式本身会返回赋值后的a.b,所以我们可以直接链式访问它的c属性并赋值,完全不会丢失a.b原本的其他数据。比如如果a.b原本是{ d: 2 },执行后a.b会变成{ d: 2, c: 1 },和你原来两行代码的行为完全一致。

避免踩坑:别用错误的运算符

注意不要写成(a.b ||= {}).c = 1,因为||=会把所有假值(比如0、''、false)都当成需要替换的情况,而你原代码用的??=只针对null/undefined,前者会意外覆盖a.b的合法假值属性,不符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:24:45