Вопрос проверяет понимание модели памяти и того, почему изменения параметра внутри функции не меняют исходную переменную для примитивных типов.
Примитивы (например, number, string, boolean, null, undefined, bigint, symbol) передаются в функцию как значение. Это означает, что параметр функции получает копию значения, а не “ссылку” на исходную переменную. Если внутри функции изменить параметр, изменится только локальная копия. Снаружи исходная переменная останется прежней.
JavaScript передаёт аргументы по значению, но важно понимать, что “значение” у примитива и у объекта — разное. Для примитива это само значение (число, строка и т.д.), поэтому функция не может “дотянуться” до внешней переменной и изменить её напрямую.
Определение: Передача по значению (pass-by-value) — это когда параметр функции получает копию переданного значения, и дальнейшие изменения параметра не влияют на исходную переменную.
Когда ты вызываешь функцию:
Вычисляется значение аргумента.
Создаётся параметр (локальная переменная функции).
В параметр записывается копия этого значения.
Пример:
function inc(x) {
x = x + 1;
return x;
}
let a = 10;
const b = inc(a);
console.log(a); // 10
console.log(b); // 11
a остаётся 10, потому что x — отдельная локальная переменная.
x = x + 1 — это переприсваивание локального параметра.
Предсказуемость
Функции, работающие с примитивами, по умолчанию “безопаснее”: они не меняют внешнее состояние, если явно не возвращают новое значение.
Иммутабельный стиль
В UI (в том числе в React) часто удобнее “не мутировать”, а возвращать новое значение.
Иногда говорят, что “примитив передаётся по значению, объект — по ссылке”. Точнее так:
JavaScript всегда передаёт по значению.
Для объектов это значение — ссылка (идентификатор) на объект.
Из-за этого поведение объектов выглядит “как по ссылке”, но технически это “копия ссылки”.
Вывод: примитивы передаются как копия значения, поэтому переприсваивание параметра внутри функции не влияет на переменную снаружи.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию