首页 文章

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

提问于
浏览
0

在尝试使用三元运算符有条件地将两个参数之一传递给字符串的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)

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

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

我正在Chrome控制台中完成所有这些工作 . 还使用array.slice尝试了所有相同的行 .

1 回答

  • 3

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

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

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

相关问题