JavaScript

Операторы распространения и отдыха JavaScript

Они оба используют три точки, ..., какая разница?

Введение

В JavaScript оператор расширения и оператор остатка — это полезные функции, которые включают работу с массивами и аргументами функций. Хотя они могут показаться похожими, у них разные варианты использования и поведение.

  1. Оператор спреда (…)

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

Вот несколько вариантов использования оператора спреда:

  • Расширение массива: его можно использовать для создания нового массива путем объединения существующих массивов или добавления новых элементов в массив.
  • - Распределение вызовов функций: он может передавать элементы массива как отдельные аргументы функции.
  • - Распространение объектов: он может создать новый объект, объединив свойства нескольких объектов или добавив новые свойства.

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

const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const combinedArray = [...array1, ...array2]; // [1, 2, 3, 4, 5, 6]

function sum(a, b, c) {
  return a + b + c;
}
const numbers = [1, 2, 3];
const result = sum(...numbers); // 6

const obj1 = { x: 1, y: 2 };
const obj2 = { z: 3 };
const mergedObj = { ...obj1, ...obj2 }; // { x: 1, y: 2, z: 3 }

2. Оператор Rest (…)

Оператор rest, также представленный тремя точками (…), используется в параметрах функции для представления неопределенного числа аргументов в виде массива. Он позволяет записывать несколько аргументов функции в один массив.

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

function sum(...numbers) {
  let total = 0;
  for (const number of numbers) {
    total += number;
  }
  return total;
}

const result = sum(1, 2, 3, 4, 5); // 15

В этом примере оператор rest, …numbers, собирает все переданные аргументы функции и группирует их в массив с именем numbers. Это позволяет обрабатывать произвольное количество аргументов внутри функции.