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

标签 javascript ternary-operator

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

相关文章:

javascript - 三元运算符在 react js 渲染函数中不起作用

php - 嵌套三元语句

c - 宏三元逗号表达式用作语句时会导致警告

java - "Wrong"在 Java 中使用 if 与三元运算符时的返回类型

javascript - Web 推送通知 - 多个子域问题?

javascript - div 上 Const 的 ReactJS 值

javascript - 从特定字符串中获取函数名称

javascript - list 不是有效的 JSON。怎么了?

javascript - Javascript 函数是否应该避免通过三元条件拒绝 promise ?

javascript - 将 chrome devtools 与 browsersync & --inspect 一起使用