You need to enable JavaScript to run this app. 在NodeJS中使用Nullish coalescing assignment operator (??=)是否可行?
优惠活动
大模型
产品
解决方案
定价
更多

在NodeJS中使用Nullish coalescing assignment operator (??=)是否可行?

问题解决方法

报错根因

Nullish coalescing assignment operator(??=,空值合并赋值运算符)属于ES2021(ES12)新增语法,你当前使用的Node.js版本低于v15.14.0(该语法的最低支持Node.js版本),引擎无法识别该语法,因此抛出Unexpected token '?'语法错误。

解决方案

可选两种方案处理:

  • 方案1:升级Node.js版本到v15.14.0或更高
    升级后不需要修改代码即可直接正常运行,可通过node -v命令查看当前Node.js版本,确认是否满足要求。
  • 方案2:改写语法兼容低版本Node.js
    ??=的逻辑为仅当左侧变量值为null或undefined时,才将右侧值赋值给左侧变量,你可以把代码中的对应逻辑替换为等价兼容写法,同时修正原代码中变量名写错的问题:
    完整修改后代码如下:
    const setValue = (object, path, value) => {
      const indices = {
          first: 0,
          second: 1
        },
        keys = path.replace(new RegExp(Object.keys(indices).join('|'), 'g'), k => indices[k]).split('.'),
        last = keys.pop();
    
      keys
        .reduce((o, k, i, kk) => {
          // 等价替换??=语法
          if (o[k] === null || o[k] === undefined) {
            o[k] = isFinite(i + 1 in kk ? kk[i + 1] : last) ? [] : {}
          }
          return o[k]
        }, object)[last] = value;
    
      // 修正原代码变量名错误,原返回obj未定义
      return object;
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 21:45:05