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.
Common usage of array as arguments to a function is as below:
With ES2015 spread you can now write the above as:
Rest operator Vs spread syntax
... 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.