Проверяет понимание механизма передачи аргументов в функции в JavaScript, что критично для предсказания поведения кода.
В JavaScript механизм передачи аргументов зависит от типа данных. Примитивные типы (string, number, boolean, null, undefined, symbol, bigint) передаются по значению: при вызове функции создается копия значения, и все операции внутри функции работают с этой копией. Объекты (включая массивы, функции, даты) передаются по ссылке: в функцию передается ссылка на объект в памяти, поэтому изменения свойств объекта внутри функции отражаются на оригинале.
function changePrimitive(x) {
x = 10; // меняем копию
}
let a = 5;
changePrimitive(a);
console.log(a); // 5 — оригинал не изменился
function changeObject(obj) {
obj.name = 'Новое имя'; // меняем свойство объекта
}
let user = { name: 'Старое' };
changeObject(user);
console.log(user.name); // 'Новое имя' — объект изменен
function reassignObject(obj) {
obj = { name: 'Другой' }; // переназначаем ссылку
}
let user2 = { name: 'Исходный' };
reassignObject(user2);
console.log(user2.name); // 'Исходный' — внешняя переменная не измениласьПонимание этой особенности важно для написания предсказуемого кода, особенно при работе с функциями, изменяющими данные. Если вы хотите, чтобы функция не влияла на внешние объекты, используйте иммутабельные подходы или явное копирование. Это знание часто проверяется на собеседованиях, так как ошибки из-за мутаций — одна из частых причин багов в JavaScript.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию