Присвоение значения внешней переменной в теле функции

let i = 1;
function foo(a){
a = 2
}
foo(i)
console.log(i)

почему выводит 1?


Ответы (1 шт):

Автор решения: Danila Kartovitskii

В примере, Вы передаете аргументы функции. Когда функции передается переменная i в foo(i), и значение переменной i (равное 1) копируется в параметр a функции foo.

Внутри функции foo происходит присвоение значения a = 2, но это присвоение происходит с параметром a, а не с самой переменной i. Поэтому, когда вы печатаете значение переменной i после вызова функции foo, значение остается неизменным (равным 1), так как изменения внутри функции не затрагивают значение исходной переменной i.

→ Ссылка