首页 > 解决方案 > JavaScript (ES6):在条件表达式中使用扩展运算符 (?-operator)

问题描述

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

[...[1,2,3], ...[4,5,6]]
// -> [1, 2, 3, 4, 5, 6]

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

[true ? ...[1,2,3] : ...[4,5,6]]
// Uncaught SyntaxError: Unexpected token ...

这是对语言的合理限制、缺陷还是我遗漏了什么?是否可以在没有命令式方法或功能的情况下在语法上实现这一目标Object.assign()

标签: javascriptecmascript-6

解决方案


将点移到表达式之外,并对结果进行扩展。

console.log([...(true ? [1, 2, 3] : [4, 5, 6])]);

这仅适用于可传播的值。如果不是,则将不可展开的部分包装到一个数组中。

console.log([...(true ? [1] : [4, 5, 6])]);


推荐阅读