The spread syntax allows an expression to be expanded in places where multiple arguments (for function calls) or multiple elements (for array literals) or multiple variables (for destructuring assignment) are expected.
The above default parameter code is equivalent to the following code.
Rest operator...
looks exactly like the spread syntax...
and is used for destructuring arrays and objects.
In a way, Rest elements are the opposite of spread elements - spread elements 'expands' an array into its elements, and rest elements collects multiple elements and 'condenses' into a single element.