我正在尝试使用NodeJS中的Nullish合并赋值运算符(??=),这是可能的吗?
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;
}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发布于 2021-06-14 00:16:00
发布于 2021-10-14 17:07:59
这对于节点版本v15.14+是可能的。
对以下内容的重写
a.greeting ??= "hello"在节点
a.greeting = a?.greeting ?? 'hello'
也许它确实对某些人有帮助:]
发布于 2021-06-14 00:14:25
您正在使用的节点版本不支持node合并赋值运算符。
https://stackoverflow.com/questions/67959998
复制相似问题