Что будет, если в функции изменить параметры, и что произойдет с ними?
Этот вопрос проверяет, как изменение параметров внутри функции влияет на их значения и какие особенности существуют при работе с параметрами в JavaScript.
Короткий ответ
Если изменить параметры внутри функции, их значения будут изменены только внутри этой функции. При этом, если параметр является примитивом (число, строка, булевое значение), изменение затронет только локальную копию, а если параметр — объект, изменения отразятся на исходном объекте, потому что объекты передаются по ссылке.
Длинный ответ
В JavaScript параметры функции могут вести себя по-разному в зависимости от их типа — примитивный или ссылочный.
Примитивные типы (числа, строки, булевые значения): Передаются по значению, то есть внутри функции создается копия значения, и любые изменения параметра затрагивают только эту копию. Пример:
function modifyPrimitive(num) { num = num * 2; console.log(num); // Локально изменённое значение } let x = 5; modifyPrimitive(x); // 10 console.log(x); // 5, исходное значение не изменилосьСсылочные типы (объекты, массивы): Передаются по ссылке, что означает, что при изменении параметра внутри функции изменяется сам объект, на который эта ссылка указывает. Пример:
function modifyObject(obj) { obj.name = 'Changed'; } let person = { name: 'Alice' }; modifyObject(person); console.log(person.name); // 'Changed', объект изменён
Из этого следует важный вывод: примитивные значения изолированы внутри функции, и их изменение не влияет на исходные данные, тогда как объекты изменяются напрямую, что может привести к непредвиденным последствиям, если не учитывать это поведение.