Javascript 如何使用;“扩展语法”;(……)和;条件运算符“;(?:)同时?

Javascript 如何使用;“扩展语法”;(……)和;条件运算符“;(?:)同时?,javascript,arrays,Javascript,Arrays,我认为e应该是[1,2,3,4],但是我收到了错误消息,有人能解释一下原因吗 (我在IDE和Chrome控制台中进行了尝试,无论是否带有括号,都显示了相同的错误消息。)您需要将…提升一个级别: 设e=[…a,…(c==5?b:[3]); 您需要将..提升一个级别: 设e=[…a,…(c==5?b:[3]); 试试这个 let a = [1, 2]; let b = [3, 4]; let c = 5; let d = [...a, ...b]; // OK let e = [...a, (c =

我认为e应该是[1,2,3,4],但是我收到了错误消息,有人能解释一下原因吗


(我在IDE和Chrome控制台中进行了尝试,无论是否带有括号,都显示了相同的错误消息。)

您需要将
提升一个级别:

设e=[…a,…(c==5?b:[3]);

您需要将
..
提升一个级别:

设e=[…a,…(c==5?b:[3]);
试试这个

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
试试这个

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

为了补充塔德曼的答案:想想什么是
…b
,它只是以“3,4”的形式展开的数字。您无法将其分配给变量,即
constspreadb=…b//spreadbb=3,4
将不会编译。如前所述,您需要将spread操作符向上移动一个级别

let e = [...a, ... c === 5 ? b : [3]];

为了补充塔德曼的答案:想想什么是
…b
,它只是以“3,4”的形式展开的数字。您无法将其分配给变量,即
constspreadb=…b//spreadbb=3,4
将不会编译。如前所述,您需要将spread操作符向上移动一个级别

let e = [...a, ... c === 5 ? b : [3]];

屏幕截图分散了注意力,没有添加新信息。由于很多原因,纯文本代码更好,主要是可读性和可重用性。屏幕截图会分散注意力,不会添加新信息。由于很多原因,纯文本代码更好,主要是可读性和可重用性。感谢您的回复,我理解这是可以的,但我不知道为什么我的代码不起作用。我检查了MDN文档,但仍然没有找到原因。如果这是一个TypeScript问题,可以,但也要标记它,以便我们可以相应地推荐。感谢您的回复,我理解这是可以的,但我不知道为什么我的代码不起作用。我检查了MDN文档,但仍然没有找到原因。如果这是一个TypeScript问题,可以,但也要标记它,以便我们可以相应地推荐。谢谢,所以原因是(…[1,2])不是表达式?MDN文档显示在“A?B:C”中,B和C必须是表达式,错误消息“Expression expected”表示IDE认为(…X)不是表达式。有点困惑,再次感谢。谢谢,原因是(…[1,2])不是一个表达式?MDN文档显示在“A?B:C”中,B和C必须是表达式,错误消息“Expression expected”表示IDE认为(…X)不是表达式。有点困惑,再次感谢。