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

时间:2017-10-29 18:24:14

标签: javascript ternary-operator

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

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

我得到“Uncaught SyntaxError:Unexpected token ...”

我在使用三元运算符时出错了吗?一起休息?有没有正确的方法来写这个表达式?或者,正如开发人员朋友声称的那样,这是静态参数或三元运算符的实现中的错误吗?

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

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

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

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

我正在Chrome控制台中执行所有操作。还使用array.slice尝试了所有相同的行。

1 个答案:

答案 0 :(得分:3)

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

只要您实际应用于参数:

,就可以将其应用于任何方法调用
str.slice(...(a > b ? [b, a] : [a, b]));