首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NodeJS中的空合并赋值运算符(??=)

NodeJS中的空合并赋值运算符(??=)
EN

Stack Overflow用户
提问于 2021-06-13 23:37:34
回答 4查看 992关注 0票数 2

我正在尝试使用NodeJS中的Nullish合并赋值运算符(??=),这是可能的吗?

代码语言:javascript
复制
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) => o[k] ??= isFinite(i + 1 in kk ? kk[i + 1] : last) ? [] : {}, object)[last] = value;

  return obj;
}
代码语言:javascript
复制
est.js:9
       .reduce((o, k, i, kk) => o[k] ??= isFinite(i + 1 in kk ? kk[i + 1] : last) ? [] : {}, object)
                                      ^

SyntaxError: Unexpected token '?'
        at wrapSafe (internal/modules/cjs/loader.js:1067:16)
        at Module._compile (internal/modules/cjs/loader.js:1115:27)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
        at Module.load (internal/modules/cjs/loader.js:1000:32)
        at Function.Module._load (internal/modules/cjs/loader.js:899:14)
        at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
        at internal/main/run_main_module.js:17:47
EN

回答 4

Stack Overflow用户

发布于 2021-06-14 00:16:00

该错误表示您的节点版本尚不支持??=运算符。

查看node.green上支持它的版本

票数 5
EN

Stack Overflow用户

发布于 2021-10-14 17:07:59

这对于节点版本v15.14+是可能的。

对以下内容的重写

代码语言:javascript
复制
a.greeting ??= "hello"

在节点

代码语言:javascript
复制
a.greeting = a?.greeting ?? 'hello'

也许它确实对某些人有帮助:]

票数 2
EN

Stack Overflow用户

发布于 2021-06-14 00:14:25

您正在使用的节点版本不支持node合并赋值运算符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67959998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档