Spread и slice создают поверхностные копии: вложенные объекты остаются общими ссылками. slice(start, end) копирует диапазон, не включая end.
Как работают `spread`-оператор и `slice` при копировании массивов и объектов? Какие параметры принимает `Array.prototype.slice`?
Spread и slice создают поверхностные копии: вложенные объекты остаются общими ссылками. slice(start, end) копирует диапазон, не включая end.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Spread и slice создают поверхностные копии: вложенные объекты остаются общими ссылками. slice(start, end) копирует диапазон, не включая end.
Отрицательные индексы slice отсчитываются от конца; отсутствующий end означает длину массива. Объектный spread копирует собственные перечисляемые свойства, массивный — значения iterable. У обычного объекта метода slice нет. Для разреженного массива slice сохраняет пустые позиции, а spread обычно превращает их в элементы undefined; это ещё одно отличие.