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传播和休息运算符的运算符优先级?的主要内容,如果未能解决你的问题,请参考以下文章