尝试使用三元运算符有条件地将两个参数之一传递给字符串的 slice 方法,如下所示:
var str = "abcdefg";
var a = 1;
var b = 2;
str.slice(a > b ? ...[b, a] : ...[a, b]);
我收到“未捕获的语法错误:意外的标记...”
我在同时使用三元运算和休息时是否做错了什么?有没有正确的方法来写这个表达式?或者,正如一位开发者 friend 所说,这是剩余参数或三元运算符的实现中的错误吗?
方法参数中的三元运算符无需其余参数即可工作:
str.slice(a > b ? a : b)
剩余参数无需三元运算符即可工作:
str.slice(...[a, b])
我在 Chrome 控制台中完成所有这些操作。还尝试了使用 array.slice 的所有相同行。
最佳答案
...
运算符是数组文字或调用表达式的一部分;作为一个独立的操作符它没有任何意义(...a
意味着什么独立?)。
您可以将其应用于任何方法调用,只要您实际应用于参数即可:
str.slice(...(a > b ? [b, a] : [a, b]));
关于JavaScript 三元运算符不接受剩余参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47003694/