Этот вопрос проверяет, как изменение параметров внутри функции влияет на их значения и какие особенности существуют при работе с параметрами в 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', объект изменёнИз этого следует важный вывод: примитивные значения изолированы внутри функции, и их изменение не влияет на исходные данные, тогда как объекты изменяются напрямую, что может привести к непредвиденным последствиям, если не учитывать это поведение.