javascript - 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()
?
解决方案
将点移到表达式之外,并对结果进行扩展。
console.log([...(true ? [1, 2, 3] : [4, 5, 6])]);
这仅适用于可传播的值。如果不是,则将不可展开的部分包装到一个数组中。
console.log([...(true ? [1] : [4, 5, 6])]);
推荐阅读
- elasticsearch - 带有 brew 的 Mac 上的 Elasticsearch 不允许我运行或卸载
- python - Pandas 每行都有不同的随机字符串
- javascript - 重新排序数据表将混合值
- go - 推断结构结构
- javascript - 更改主题样式表时是否可以添加过渡效果?
- oracle - 聚合来自 2 个表 oracle SQL 的数据
- visual-studio - .NET Framework 4.8 似乎使用早于 7 的 C# 版本
- javascript - Ghostscript:按标准过滤掉图像流
- laravel - Laravel 查询构建器连接可以有 2 个参数吗?
- python - 如何使用停用词列表尽早停止自回归模型?