尝试使用三元运算符有条件地将两个参数中的一个传递给字符串的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尝试了所有相同的行。
答案 0 :(得分:3)
...
运算符是数组文字或调用表达式的一部分;它作为一个独立的运算符没有任何意义(...a
什么意味着独立?)。
只要您实际应用于参数:
,就可以将其应用于任何方法调用str.slice(...(a > b ? [b, a] : [a, b]));