Вопрос проверяет понимание одного синтаксиса ... в разных контекстах и работу с аргументами и структурами данных.
spread используется для раскрытия элементов массива или объекта. rest используется для сбора элементов в массив или объект. Визуально это один и тот же ..., но смысл зависит от места использования. spread чаще применяют при копировании и объединении данных, rest — в параметрах функций и деструктуризации
Оператор ... имеет два разных семантических значения.
Spread — раскрывает элементы структуры.
Rest — собирает несколько элементов в одну переменную.
Используется при:
Копировании массивов и объектов.
Объединении данных.
Передаче аргументов в функцию.
const arr = [1, 2, 3];
const copy = [...arr];
const obj = { a: 1 };
const extended = { ...obj, b: 2 };
Передача аргументов:
const nums = [1, 2, 3];
Math.max(...nums);
Используется при:
Параметрах функции.
Деструктуризации.
function sum(...numbers) {
return numbers.reduce((a, b) => a + b, 0);
}
В деструктуризации:
const [first, ...rest] = [1, 2, 3];
Spread создаёт поверхностную копию.
Вложенные объекты копируются по ссылке.
Spread — это «развернуть», rest — это «собрать». Один синтаксис, но разные задачи и контексты применения.