Проверяет понимание передачи объектов по ссылке в JavaScript и отличия от примитивных типов.
В JavaScript объекты (включая массивы и функции) передаются в функции по ссылке. Это означает, что когда вы передаете объект в функцию, вы передаете не копию объекта, а ссылку на ту же область памяти, где хранится объект. Внутри функции эта ссылка доступна через параметр, и любые изменения свойств объекта через эту ссылку будут видны и за пределами функции.
Примитивные типы (числа, строки, булевы значения, null, undefined, символы) передаются по значению. При передаче примитива в функцию создается его копия, и изменения внутри функции не влияют на исходную переменную.
const user = { name: 'Alice', age: 25 };
function changeUser(person) {
person.age = 30; // меняем свойство объекта
}
changeUser(user);
console.log(user.age); // 30 — изменение видно снаружиЗдесь person — это ссылка на тот же объект, что и user. Поэтому изменение person.age меняет и user.age.
let number = 10;
function changeNumber(num) {
num = 20; // меняем локальную копию
}
changeNumber(number);
console.log(number); // 10 — исходное значение не изменилосьЗдесь num — это копия значения number, поэтому изменение num не влияет на number.
Когда вы передаете объект в функцию, в момент вызова создается новая переменная (параметр), которая указывает на тот же объект. Если внутри функции вы присвоите параметру новый объект, это не изменит внешнюю переменную, потому что ссылка на новый объект будет локальной. Например:
const user = { name: 'Alice' };
function replaceUser(person) {
person = { name: 'Bob' }; // присваиваем новую ссылку
}
replaceUser(user);
console.log(user.name); // 'Alice' — внешняя ссылка не измениласьЭто важное различие: изменение свойств объекта через ссылку меняет оригинал, а переназначение ссылки — нет.
Понимание передачи по ссылке важно для работы с функциями, которые модифицируют данные (например, сортировка массива, обновление состояния в Redux). Чтобы избежать нежелательных мутаций, часто используют иммутабельные подходы: создают копию объекта перед изменением (например, через Object.assign или спред-оператор).
Передача объектов по ссылке — фундаментальная особенность JavaScript, которая позволяет эффективно работать с данными, но требует осторожности. Используйте копирование объектов, когда нужно избежать побочных эффектов, и помните, что переназначение параметра не влияет на внешнюю переменную.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию