# Доступ к внешним переменным функций в JavaScript

Давайте рассмотрим следующий код:

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

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

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

На самом деле это не совсем так. Наша функция даже до своего вызова знает значение переменной `num`:

`let num = 1; function func() { console.log(num); // функция уже знает, что num = 1 }`

Вот более сложный пример:

`let num = 1; // функция в этот момент узнает, что num = 1 function func() { console.log(num); } num = 2; // функция в этот момент узнает, что num = 2`

Добавим вызовы функции:

`let num = 1; // функция в этот момент узнает, что num = 1 func(); // выведет 1 function func() { console.log(num); } func(); // выведет 1 num = 2; // функция в этот момент узнает, что num = 2 func(); // выведет 2`

Еще раз: на самом деле функция знает значения внешних переменных, даже не будучи вызванной.

← →
↑
en ru