Проверяет понимание того, как метод slice создаёт поверхностную копию массива и почему изменения в копии не влияют на оригинал.
Метод slice — это встроенная функция массивов в JavaScript, которая возвращает новый массив, содержащий копию части исходного массива. Ключевая особенность в том, что оригинальный массив не мутируется: slice всегда создаёт новый массив, а не изменяет существующий.
Копирование, которое выполняет slice, называется поверхностным (shallow copy). Это значит, что для примитивных значений (числа, строки, булевы) создаётся независимая копия, а для объектов и массивов копируется только ссылка на тот же объект в памяти.
const original = [1, 2, { a: 3 }];
const copy = original.slice();
copy[0] = 99; // не влияет на original
copy[2].a = 42; // влияет, т.к. объект общий
console.log(original); // [1, 2, { a: 42 }]
console.log(copy); // [99, 2, { a: 42 }]
slice() — копирует весь массив.slice(start) — копирует от индекса start до конца.slice(start, end) — копирует от start до end, не включая end.const arr = ['a', 'b', 'c', 'd'];
arr.slice(1, 3); // ['b', 'c']
arr.slice(-2); // ['c', 'd']
arr.slice(); // ['a', 'b', 'c', 'd']
Чаще всего slice используют для создания копии массива перед изменением, чтобы не мутировать исходные данные. Это особенно важно в React и Redux, где состояние должно обновляться иммутабельно. Также метод удобен для извлечения подмассивов, пагинации и работы с частями коллекций.
Важно не путать slice с splice: splice изменяет исходный массив и удаляет или вставляет элементы, а slice только копирует.
Итог: применяйте slice, когда нужно получить независимую копию массива или его части без изменения оригинала; помните, что вложенные объекты остаются общими ссылками, и для глубокого копирования нужны другие подходы.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию