JS传播和休息运算符的运算符优先级?

Posted

技术标签:

【中文标题】JS传播和休息运算符的运算符优先级?【英文标题】:Operator precedence for JS spread and rest operators? 【发布时间】:2018-07-17 07:15:32 【问题描述】:

我很好奇 javascript 中 Spread 和 Rest 运算符的优先级是什么:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator

我试图在 MDN 的运算符优先级表 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table) 上找到它们,但除非它们是现有运算符类型的子类别,否则我看不到它们。我找不到任何其他关于它的明显文档。

【问题讨论】:

它曾是该表的一部分 since 2014 但我已修复它 last month :-) @Bergi:谢谢!我不敢相信有人将它添加到 o_O 表中,但谁知道呢,2014 年的事情仍在不断变化 【参考方案1】:

Spread syntax is not an operator,因此没有优先级。

它是数组字面量和函数调用(和对象字面量)语法的一部分。

同样,rest 语法是数组解构和函数参数(和对象解构)语法的一部分。

【讨论】:

我想这是我困惑的根源。感谢你及时的答复!希望它现在更适合 Google。我有人在代码审查中提到它并建议使用括号,这让我质疑它是如何评估的。 括号?不,绝对不是。 我想看看我能不能做到这一点:func(...args || [])。它有效 @HaiPhan 是的,您可以使用func(...anyExpression),其中 any expression 的唯一限制是它不能是逗号运算符表达式(这将被视为参数分隔符而是)。

以上是关于JS传播和休息运算符的运算符优先级?的主要内容,如果未能解决你的问题,请参考以下文章

JS重点之运算符以及运算符优先级

JS 中的展开/休息运算符是如何工作的? [复制]

JS之运算符的优先级

js中运算符的优先级

JS运算符优先级(从高到低列出)

[转] JS运算符 &&和|| 及其优先级