Ми хочемо зробити цей проєкт з відкритим кодом доступним для людей у всьому світі.

Допоможіть перекласти цей підручник вашою мовою!

назад до уроку

Які змінні доступні?

важливість: 5

Функція makeWorker створює іншу функцію і повертає її. Цю нову функцію можна викликати ще звідкись.

Чи матиме вона доступ до зовнішніх змінних з місця створення, з місця виклику, чи з обох?

function makeWorker() { let name = "Петро"; return function() { alert(name); }; } let name = "Іван"; // створити функцію let work = makeWorker(); // викликати її work(); // Що вона покаже?

Яке значення вона покаже? “Петро” чи “Іван”?

Відповідь: Петро.

Функція work() в коді нижче отримує name від місця його походження через посилання на зовнішнє лексичне середовище:

Отже, відповіддю буде "Петро".

Але якби не було let name у makeWorker(), тоді пошук вийшов би за межі лексичного середовища та взяв би глобальну змінну, як ми бачимо з ланцюжка вище. В такому випадку відповідь була б "Іван".