Копирование/слияние массивов и объектов (shallow), передача аргументов:
const a = [1, 2];
const b = [...a, 3];
Math.max(...a);
const o = { ...obj, x: 1 };
Rest
Собирает остаток в массив (параметры или деструктуризация):
functionsum(...nums) {
return nums.reduce((s, n) => s + n, 0);
}
const [head, ...tail] = [1, 2, 3];
Итог
Spread раскрывает iterable/объект в места; rest упаковывает много значений в одно. Контекст расставляет смысл ....
На собеседовании
Ожидают не заученную таблицу, а умение связать концепцию с багом из практики: что сломается, если выбрать неправильный вариант, и какой код вы напишете в реальном PR. Короткий пример и граничный случай обычно ценятся выше длинной теории.
Краткий чеклист ответа: определение → отличие от соседних концепций → мини-пример → когда применять в проде.
Чем полезен spread-синтаксис и чем он отличается от rest? · Sobeso