Ham*_*ada 13 javascript node.js
我正在尝试在 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;
}
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
小智 8
节点版本 v15.14+ 是可能的。
重写类似的东西
a.greeting ??= "hello"
Run Code Online (Sandbox Code Playgroud)
在节点 <v15.14 中是:
a.greeting = a?.greeting ?? 'hello'
Run Code Online (Sandbox Code Playgroud)
也许它确实对某人有帮助:]
| 归档时间: |
|
| 查看次数: |
14131 次 |
| 最近记录: |