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