javascript - 如何同时使用“扩展语法”(...)和“条件运算符”(?:)?
问题描述
let a = [1, 2];
let b = [3, 4];
let c = 5;
let d = [...a, ...b]; // OK
let e = [...a, (c === 5 ? (...b) : 3)]; // error info: Expression expected
我认为e应该是 [1, 2, 3, 4],但是我收到错误消息,谁能解释为什么?
(我在 IDE 和 Chrome 控制台中尝试过,带或不带括号,相同的错误消息。)
解决方案
您需要...
提升一个级别:
let e = [ ...a, ...(c === 5 ? b : [ 3 ])];
推荐阅读
- c++ - 将临时结构指针分配为结构成员
- php - HTML DOM:使用php根据数据属性值删除特定的div
- html - 用 HTML 和 CSS “联锁”图像
- algorithm - 计算树遍历的最大堆栈大小
- kotlin - 使用 Dokka 构建的文档的现成示例?
- firebase - 有没有办法通过 CLI 将域添加到 firebase 身份验证的白名单?
- python - 无法分辨 Python y 轴散点图上的数字是什么意思
- java - 如何使用 javax.mail.internet.MimeBodyPart.setFileName 保留所有字符?
- python - 如何仅加载 AzureML 表格数据集的一部分(链接到 Azure Blob 存储)
- php - 一个 PHP 提交按钮必须打开两个 php 页面,而不是只打开一个