Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: array, reference, pass by reference, mutation, function

Что происходит при передаче массива в функцию?

Проверяет понимание передачи массивов по ссылке в JavaScript и связанных с этим побочных эффектов.

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

Массивы в JavaScript передаются по ссылке, а не по значению. Это значит, что внутри функции вы работаете с тем же массивом, что и снаружи. Изменения массива внутри функции отразятся на оригинале. Чтобы избежать этого, нужно создать копию массива, например, через spread-оператор или slice().

Длинный ответ

Передача массива по ссылке

В JavaScript массивы являются объектами, и при передаче в функцию передается ссылка на этот объект, а не его копия. Это означает, что любые изменения массива внутри функции (добавление, удаление или изменение элементов) будут видны и за её пределами.

Пример с мутацией

function addItem(arr) {
  arr.push(4);
}

const myArray = [1, 2, 3];
addItem(myArray);
console.log(myArray); // [1, 2, 3, 4]

В этом примере массив myArray изменился после вызова функции, потому что arr — это та же ссылка.

Как избежать побочных эффектов

Если нужно работать с массивом, не изменяя оригинал, создайте его копию. Самый простой способ — использовать spread-оператор или метод slice():

function addItemSafe(arr) {
  const newArr = [...arr, 4];
  return newArr;
}

const original = [1, 2, 3];
const updated = addItemSafe(original);
console.log(original); // [1, 2, 3]
console.log(updated);  // [1, 2, 3, 4]

Вывод

Понимание передачи по ссылке важно для написания предсказуемого кода без неожиданных мутаций. Всегда создавайте копию массива, если не планируете изменять исходные данные, особенно в больших проектах с множеством функций.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#array

#reference

#pass by reference

#mutation

#function

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию