JavaScript(ES6):在条件表达式中使用扩展运算符(?-operator)

Tuo*_*nen 1 javascript ecmascript-6

在JavaScript中,可以使用...(spread)运算符将数组与另一个合并,如下所示

[...[1,2,3], ...[4,5,6]]
// -> [1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

但是,在三元?表达式中使用扩展运算符似乎没有资格

[true ? ...[1,2,3] : ...[4,5,6]]
// Uncaught SyntaxError: Unexpected token ...
Run Code Online (Sandbox Code Playgroud)

这是一种合理的语言限制,缺陷还是我遗漏了什么?没有命令式方法或Object.assign()功能,是否有可能在语法上实现这一点?

Nin*_*olz 5

将点移动到表达式之外并使用结果执行扩展.

console.log([...(true ? [1, 2, 3] : [4, 5, 6])]);
Run Code Online (Sandbox Code Playgroud)

这仅适用于可展开的值.如果没有,请将不可展开的部分包装成数组.

console.log([...(true ? [1] : [4, 5, 6])]);
Run Code Online (Sandbox Code Playgroud)