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

JavaScript中Object[key] ??= 0语法的含义是什么?

关于??=空值合并赋值运算符的解释

你遇到的allNames[name] ??= 0;是JavaScript里的空值合并赋值运算符,作用明确:

  • 当allNames[name]的值为null或者undefined时,会把0赋值给它;
  • 如果allNames[name]已经是有效的非空值(比如数字、字符串等),则保持原数值不变,不执行赋值操作。

结合你提供的统计名字出现次数的代码来看:

const names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
const countedNames = names.reduce((allNames, name) => {
  allNames[name] ??= 0;
  allNames[name]++;
  return allNames;
}, {});

第一次遍历到某个名字(比如Alice)时,allNames是初始的空对象,allNames['Alice']不存在,也就是undefined,这时候??=会把它设为0,紧接着allNames['Alice']++就把值变成1;当第二次再遇到Alice时,allNames['Alice']已经是1(非null/undefined),??=就不会做任何操作,直接执行++把值累加到2,以此实现统计次数的效果。

这个运算符等价于更冗长的写法:

if (allNames[name] === null || allNames[name] === undefined) {
  allNames[name] = 0;
}

或者简化的赋值写法:

allNames[name] = allNames[name] ?? 0;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:40:19