Как работают `spread`-оператор и `slice` при копировании массивов и объектов? Какие параметры принимает `Array.prototype.slice`?

Spread и slice создают поверхностные копии: вложенные объекты остаются общими ссылками. slice(start, end) копирует диапазон, не включая end.

Короткий ответ

Что ответить на собеседовании

Spread и slice создают поверхностные копии: вложенные объекты остаются общими ссылками. slice(start, end) копирует диапазон, не включая end.

Подробный разбор

Ответ с пояснениями

Spread и slice создают поверхностные копии: вложенные объекты остаются общими ссылками. slice(start, end) копирует диапазон, не включая end.

Отрицательные индексы slice отсчитываются от конца; отсутствующий end означает длину массива. Объектный spread копирует собственные перечисляемые свойства, массивный — значения iterable. У обычного объекта метода slice нет. Для разреженного массива slice сохраняет пустые позиции, а spread обычно превращает их в элементы undefined; это ещё одно отличие.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее