# Глобальные переменные и параметры функций в JavaScript

Пусть у нас есть функция, принимающая параметром число:

`function func(localNum) { console.log(localNum); }`

Пусть снаружи функции есть переменная `num`:

`function func(localNum) { console.log(localNum); } let num = 1; // внешняя глобальная переменная`

Давайте вызовем нашу функцию, передав ей параметром переменную `num`:

`function func(localNum) { console.log(localNum); } let num = 1; func(num); // вызываем функцию с параметром, выведет 1`

Получится, что внутри функции будет доступна как переменная `localNum` (параметр функции), так и переменная `num` (как внешняя переменная):

`function func(localNum) { console.log(num); // выведет 1 console.log(localNum); // выведет 1 } let num = 1; func(num);`

Сама переменная `localNum` будет локальной переменной функции и не будет доступна извне:

`function func(localNum) { } let num = 1; func(num); // вызываем функцию с параметром console.log(localNum); // выдаст ошибку`

Так как переменная `localNum` - локальная, то никакие изменения с ней ничего не поменяют снаружи:

`function func(localNum) { localNum = 2; // ничего не меняет снаружи } let num = 1; func(num);`

Если же поменять внутри переменную `num` (глобальную), то изменения появятся и снаружи:

`function func(localNum) { num = 2; } let num = 1; func(num); console.log(num); // выведет 2`

Однако, если внутри функции объявить переменную `num` через `let`, то мы создадим таким образом локальную переменную `num`, никак не влияющую на внешнюю переменную:

`function func(localNum) { let num = 2; // объявим через let } let num = 1; func(num); console.log(num); // выведет 1 - ничего не поменялось`

Определите, не запуская код, что выведется в консоль:

`function func(localNum) { console.log(localNum); } func(1);`

Определите, не запуская код, что выведется в консоль:

`function func(localNum) { console.log(localNum); } let num = 1; func(num);`

Определите, не запуская код, что выведется в консоль:

`function func(localNum) { console.log(localNum); } let num = 1; func(num); num = 2;`

Определите, не запуская код, что выведется в консоль:

`let num = 1; function func(localNum) { console.log(localNum); } num = 2; func(num);`

Определите, не запуская код, что выведется в консоль:

`function func(localNum) { localNum = 2; } let num = 1; func(num); console.log(num);`

Определите, не запуская код, что выведется в консоль:

`function func(localNum) { num = 2; } let num = 1; func(num); console.log(num);`

Определите, не запуская код, что выведется в консоль:

`function func(localNum) { let num = 2; } let num = 1; func(num); console.log(num);`
←→
↑
en ru