I am confused about the spread syntax and rest parameter in ES2015. Can anybody explain the difference between them with proper examples?
Rest Parameter collects all remaining elements into an array. Spread Operator expands collected elements such as arrays into single elements. The spread syntax only does a shallow copy one level deep. Only the last parameter can be a rest parameter.
Spread syntax looks exactly like rest syntax. In a way, spread syntax is the opposite of rest syntax. Spread syntax "expands" an array into its elements, while rest syntax collects multiple elements and "condenses" them into a single element.
The spread syntax was introduced in the ES6 specification of JavaScript. It since has proved to be a valuable piece of code making the code clean and easy to understand.
The rest parameter syntax allows us to represent an indefinite number of arguments as an array. With the help of a rest parameter a function can be called with any number of arguments, no matter how it was defined. Rest parameter is added in ES2015 or ES6 which improved the ability to handle parameter.
When using spread, you are expanding a single variable into more:
var abc = ['a', 'b', 'c']; var def = ['d', 'e', 'f']; var alpha = [ ...abc, ...def ]; console.log(alpha)// alpha == ['a', 'b', 'c', 'd', 'e', 'f'];
When using rest arguments, you are collapsing all remaining arguments of a function into one array:
function sum( first, ...others ) { for ( var i = 0; i < others.length; i++ ) first += others[i]; return first; } console.log(sum(1,2,3,4))// sum(1, 2, 3, 4) == 10;
ES6 has new feature three dots ...
Here is how we can use these dots:
- As Rest/Collector/Gather
var [c, ...m] = [1,2,3,4,5]; // m -> [2,3,4,5]
Here ...m
is a collector, it collects the rest of the parameters. Internally when we write:
var [c, ...m] = [1,2,3,4,5];
JavaScript does following
var c = 1, m = [2, 3, 4, 5];
- As Spread
var params = [ "hello", true, 7 ]; var other = [ 1, 2, ...params ]; // other => [1,2,"hello", true, 7]
Here, ...params
spreads so as to adding all of its elements to other
Internally JavaScript does following
var other = [1, 2].concat(params);
Hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With