JavaScript 三元运算符不接受剩余参数?

JavaScript ternary operator doesn't accept rest parameters?

在尝试使用三元运算符有条件地将两个参数之一传递给字符串的 slice 方法时,如下所示:

var str = "abcdefg";
var a = 1;
var b = 2;
str.slice(a > b ? ...[b, a] : ...[a, b]);

我得到"Uncaught SyntaxError: Unexpected token ..."

我在使用三元运算和休息时做错了什么吗?这个表达式有正确的写法吗?或者,正如开发者朋友所说,这是 rest 参数或三元运算符的实现错误吗?

方法参数中的三元运算符在没有剩余参数的情况下工作:

str.slice(a > b ? a : b)

其余参数在没有三元运算符的情况下工作:

str.slice(...[a, b])

我正在 Chrome 控制台中执行所有这些操作。还用 array.slice.

尝试了所有相同的行

...运算符是数组文字或调用表达式的一部分;作为一个独立的运营商没有任何意义(...a 意味着独立?)。

您可以将它应用于任何方法调用,只要您实际应用于参数:

str.slice(...(a > b ? [b, a] : [a, b]));