JavaScript (ES6) : Using spread operator inside conditional expression (? -运算符)

标签 javascript ecmascript-6

<分区>

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

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

但是,在三元?表达式中使用spread运算符似乎是不合格的

[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])]);

关于JavaScript (ES6) : Using spread operator inside conditional expression (? -运算符),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54294153/

相关文章:

javascript - 将 DropzoneJS 与 Django 一起使用时出现 MultiValueDictKeyError

javascript - 什么时候在闭包中使用 typedef?

javascript - 有什么方法可以将状态变量导出/传递到 ReactJS 中的外部 CSS 文件

javascript - 如何在函数参数上使用模板文字?

javascript - 如何获取 JavaScript 生成器的第 n 个值?

javascript - 使用 string.replace 应用字符串数组

javascript - 使用 Spoon 从数据网格连接

php - 如何在 nextGen (galleryview template) wordpress 插件中增加图像的宽度?

javascript - 努力让 ES6 这个绑定(bind)工作

javascript - 子扩展类方法调用其 super 版本,但仍然只能看到子数据