// We use the spread operator to spread array values or iterables into maybe an array or object.
// While we use the Rest operator to gather the remaining elements passed into a function as an array.
const myFunction = (name1, ...rest) => { // used rest operator here
console.log(name1);
console.log(rest);
};
let names = ["John", "Jane", "John", "Joe", "Joel"];
myFunction(...names); // used spread operator here
/**
* JS Spread and Rest operators:
* Two operators with the same syntax (...) but behave differently
*/
// Rest parameter: collects all remaining elements into an array.
function foo (...args) { console.log(args) }
foo(1,2,3,4,5,6) // Output: (6) [1,2,3,4,5,6]
// Spread operator: allows iterables to be expanded into single elements.
let arr = [1, 2, 3];
let arrCopy = [-1, 0, ...arr]; // spread the array into a list of parameters
// then put the result into a new array