# Параметры внешней и внутренней функций в JavaScript

Давайте сделаем так, чтобы и внешняя функция и внутренняя принимали параметры:

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

Передадим параметр внешней функции в вызов внутренней функции:

`function test(num) { function func(localNum) { console.log(localNum); // выведет 1 } func(num); //!! передаем параметр } test(1); // передаем параметром число`

Получается, что во внутренней функции будет доступна переменная `num` как внешняя переменная из родительской функции и переменная `localNum`, являющаяся локальной переменной внутренней функции.

Обе эти переменные будут иметь одинаковые значения:

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

Разница между ними будет в следующем: если во внутренней функции изменить переменную `num` - она поменяется и во внешней функции:

`function test(num) { function func(localNum) { num = 2; // меняем переменную num } func(num); // передаем параметр console.log(num); // выведет 2 } test(1); // передаем параметром число`

А переменная `localNum` будет локальной. Ее изменения не будут приводить ни к каким изменениям во внешней функции. Да и сама переменная `localNum` не будет видна снаружи внутренней функции:

`function test(num) { function func(localNum) { localNum = 2; // меняем переменную num } func(num); // передаем параметр } test(1); // передаем параметром число`

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

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

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

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

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

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

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

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

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

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

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

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