Skip to content

Latest commit

 

History

History
37 lines (27 loc) · 1.72 KB

File metadata and controls

37 lines (27 loc) · 1.72 KB

В чём преимущества использования spread оператора и чем он отличается от rest оператора?

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 }