Usage of rest parameter and spread operator in javascript

ecmascript-6, javascript, rest-parameters, spread-syntax

Solution

Is the difference between them is just syntax or there's a performance issue?

Both, and more...

Rest parameters:

- Are a known idiom in other languages (Ruby, Python).

- Are esier to read and maintain (vs. `slice`).

- Are easier to understand for beginners.

- Can (and likely will) result in better performance, since engines can optimize.

- Are tool friendlier, as they can be analyzed statically.

Problem

What's the usage of rest parameter that will be added in ECMAScript 6? For example, in ECMAScript 5 you can do the following to get an array of parameters starting from the second element: ``` // ES 5 store('Joe', 'money'); store('Jane', 'letters', 'certificates'); function store(name) { var items = [].slice.call(arguments, 1); //['money'] in first case items.forEach(function (item) { vault.customer[name].push(item); }); } ``` and that will be equivalent to the following code in ECMAScript 6: ``` // ES 6 store('Joe', 'money'); store('Jane', 'letters', 'certificates'); function store(name, ...items) { items.forEach(function (item) { vault.customer[name].push(items) }); } ``` Is the difference between them is just syntax or there's a performance issue? Also for spread operator (...) ``` //in ecmascript5 var max = Math.max.apply(null, [14, 3, 77]); //but in ecmascript6 var max = Math.max(...[14, 3, 77]); ``` Is this just syntax change or performance issue?

Original source

Related problems