首页 > 解决方案 > 具有空值合并的 ES6 数组扩展运算符

问题描述

Expression expected尝试此操作时出现错误:

const func = () => [0, 1]
const possibly_undefined_var = { var: 3 }

const var = [possibly_undefined_var?.var ?? ...func()]

预期结果:[3] 或 [0, 1]

我想知道在这个例子中是否有任何方法可以使用数组扩展运算符和空值合并。

标签: javascriptecmascript-6

解决方案


我认为最清晰的方法是使用条件运算符:

const obj = possibly_undefined_var?.var;
const arr = obj ? [obj] : [...func()];

我想不出任何好的方法来替代单个数组文字内obj的传播,func这不会造成不必要的混乱和冗长(我认为无论如何都需要条件运算符)。

如果obj可以是 false 而不是 null 或 undefined,那么它需要更多的代码:

const obj = possibly_undefined_var?.var;
const arr = (obj === null || obj === undefined) ? [...func()] : [obj];

推荐阅读