Spread оператор синтаксиса ES6 очень полезен при написании кода в функциональном стиле, поскольку мы можем легко создавать копии массивов или объектов, не прибегая к Object.create
, slice
или функции библиотеки.
function putSmthgInAnyArray(arr) {
return [...arr, 'Smthg'];
}
const result = putSmthgInAnyArray([1, 2, 3]); // [1, 2, 3, 'Smthg'];
const person = {
name: 'Todd',
age: 29
};
const copyOfTodd = { ...person };
Rest оператор синтаксиса ES6 позволяет в сокращённом виде указывать неопределённое количество аргументов, передаваемых в функцию. Можно сказать, что он противоположен spread оператору: собирает данные и добавляет их в массив, вместо разделения массива данных. Он используется в аргументах функций, а также при деструктуризации массивов и объектов.
function addFiveToABunchOfNumbers(...numbers) {
return numbers.map(x => x + 5);
}
const result = addFiveToABunchOfNumbers(4, 5, 6, 7, 8, 9); // [9, 10, 11, 12, 13, 14]
const [a, b, ...rest] = [1, 2, 3, 4]; // a:1, b:2, rest:[3, 4]
const { e, f, ...others } = {
e: 1,
f: 2,
g: 3,
h: 4,
}; // e:1, f: 2, others: { g:3, h:4 }