在 JavaScript 中是否有类似可选链接的赋值

Is there something like optional chaining for assignment in JavaScript

可选链接在访问数据时是一个强大的功能,例如

const options = cache.[server]?.[channel]?.[service]

现在写数据的时候我们一般需要做类似

cache[server] ??=  {}
cache[server][channel] ??= {}
cache[server][channel][service] = options

是否有像可选链接这样的东西可以使赋值变得更轻(也许在一行中)?

类似于:

cache[server]??{}:[channel]??{}:[service]=options

在这种情况下,在其后添加 {}[] 将允许指示如果为空则预期分配的内容。


正如@Bergi 所提议的,最接近的方法是这样写:

((cache[server] ??= {})[channel] ??= {})[service] = options

您可以使用括号来转换

cache[server] ??= {}
cache[server][channel] ??= {}
cache[server][channel][service] = options

变成一个表达式

((cache[server] ??= {})[channel] ??= {})[service] = options