Как передаются аргументы в функцию?
Короткий ответ
Аргументы передаются по значению. Параметр функции - отдельная переменная; если передан объект, через нее доступен тот же объект.
Разбор
Присваивание параметру нового значения не меняет переменную вызывающего кода. Но изменение поля общего объекта видно снаружи.
Поэтому «функция не меняет вход» обычно означает, что она не изменяет и вложенные объекты. Один только const у внешней переменной этого не обеспечивает.
function change(user) {
user.name = "Оля"
user = { name: "Ира" }
}
const person = { name: "Анна" }
change(person)
console.log(person.name) // Оля