11

I'm curious what the precedence of the Spread and Rest operators are in Javascript: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator

I was trying to find them on MDN's Operator Precedence table (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence#Table) but unless they are a subcategory of an existing operator type, I don't see them. I couldn't find any other obvious documentation about it.

2
  • 1
    It had been part of that table since 2014 but I fixed it last month :-)
    – Bergi
    Commented Feb 7, 2018 at 5:10
  • @Bergi: thank you! I can’t believe someone added that to the table o_O but who knows, things were still in flux in 2014 Commented Feb 7, 2018 at 15:52

1 Answer 1

21

Spread syntax is not an operator and therefore does not have a precedence.

It is part of the array literal and function call (and object literal) syntax.

Similarly, rest syntax is part of the array destructuring and function parameter (and object destructuring) syntax.

7
  • 1
    I guess that was the source of my confusion. Thanks for the quick answer! Hopefully it is more Googleable now. I had someone mention it in code review and suggest parentheses and it made me question how it got evaluated. Commented Feb 7, 2018 at 6:14
  • Parenthesis? No, definitely not.
    – Bergi
    Commented Feb 7, 2018 at 6:20
  • 5
    I was trying to see if I can do this: func(...args || []). It works Commented Jul 8, 2018 at 0:26
  • 3
    @HaiPhan Yes, you can do func(...anyExpression) where the only limitation to any expression is that it must not be a comma operator expression (which would count as an argument delimiter instead).
    – Bergi
    Commented Jul 8, 2018 at 15:53
  • IIUC, This is like saying is that it has a lower precedence than all operators. It applies to the fully-evaluated expression following it up to the closing ].
    – einpoklum
    Commented Sep 10, 2023 at 21:01

Not the answer you're looking for? Browse other questions tagged or ask your own question.