Что будет, если в функции изменить параметры, и что произойдет с ними?

Этот вопрос проверяет, как изменение параметров внутри функции влияет на их значения и какие особенности существуют при работе с параметрами в JavaScript.

Короткий ответ

Если изменить параметры внутри функции, их значения будут изменены только внутри этой функции. При этом, если параметр является примитивом (число, строка, булевое значение), изменение затронет только локальную копию, а если параметр — объект, изменения отразятся на исходном объекте, потому что объекты передаются по ссылке.

Длинный ответ

В JavaScript параметры функции могут вести себя по-разному в зависимости от их типа — примитивный или ссылочный.

 

  1. Примитивные типы (числа, строки, булевые значения): Передаются по значению, то есть внутри функции создается копия значения, и любые изменения параметра затрагивают только эту копию. Пример:

    function modifyPrimitive(num) {
        num = num * 2;    
        console.log(num); // Локально изменённое значение 
    } 
    let x = 5; 
    modifyPrimitive(x); // 10 
    console.log(x); // 5, исходное значение не изменилось
  2. Ссылочные типы (объекты, массивы): Передаются по ссылке, что означает, что при изменении параметра внутри функции изменяется сам объект, на который эта ссылка указывает. Пример:

    function modifyObject(obj) {
        obj.name = 'Changed'; 
    } 
    let person = { name: 'Alice' }; 
    modifyObject(person); 
    console.log(person.name); // 'Changed', объект изменён

 

Из этого следует важный вывод: примитивные значения изолированы внутри функции, и их изменение не влияет на исходные данные, тогда как объекты изменяются напрямую, что может привести к непредвиденным последствиям, если не учитывать это поведение.

Уровень

  • Рейтинг:

    3

  • Сложность:

    6

Навыки

  • JavaScript

    JavaScript

Ключевые слова

Подпишись на React Developer в телеграм