Назад к вопросам
Junior
77
questionbank

В чем разница между операторами spread и rest?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Оператор spread (...) разворачивает итерируемые объекты (массивы, строки) в отдельные элементы, часто используется для создания копий массивов, слияния объектов или передачи аргументов функции. Оператор rest (...) собирает оставшиеся элементы в один массив, используется в деструктуризации или при определении функций для сбора аргументов.

Примеры использования spread:

// Создание копии массива
const arr1 = [1, 2, 3];
const arr2 = [...arr1]; // arr2 = [1, 2, 3]

// Объединение массивов
const arr3 = [4, 5];
const combined = [...arr1, ...arr3]; // combined = [1, 2, 3, 4, 5]

// Передача аргументов функции
function sum(a, b, c) {
  return a + b + c;
}
const numbers = [1, 2, 3];
const result = sum(...numbers); // result = 6

Примеры использования rest:

// Сбор оставшихся элементов при деструктуризации массива
const [first, ...restOfArray] = [1, 2, 3, 4]; // first = 1, restOfArray = [2, 3, 4]

// Сбор аргументов функции
function logArguments(arg1, ...restArgs) {
  console.log(arg1); // первый аргумент
  console.log(restArgs); // массив остальных аргументов
}
logArguments(1, 2, 3, 4); // Выведет 1 и [2, 3, 4]

Ключевое отличие заключается в их назначении: spread расширяет, rest сжимает.