Чи побачить функція останні зміни?
важливість: 5
Функція sayHi
використовує зовнішню змінну. Яке значення буде використано під час виконання функції?
let name = "Іван";
function sayHi() {
alert("Привіт, " + name);
}
name = "Петро";
sayHi(); // що вона покаже "Іван" чи "Петро"?
Такі ситуації поширені як у браузері, так і в серверній розробці. Функцію можна запланувати на виконання пізніше, ніж вона створена, наприклад, після дії користувача або запиту мережі.
Отже, виникає питання: чи побачить функція останні зміни?
Відповідь: Петро.
Функція отримує зовнішні змінні такими, якими вони є зараз, тобто вона використовує останні значення.
Старі значення змінних ніде не зберігаються. Коли функція потребує змінної, вона бере поточне значення зі свого власного або зовнішнього лексичного середовища.