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

Чи побачить функція останні зміни?

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

Функція sayHi використовує зовнішню змінну. Яке значення буде використано під час виконання функції?

let name = "Іван";

function sayHi() {
  alert("Привіт, " + name);
}

name = "Петро";

sayHi(); // що вона покаже "Іван" чи "Петро"?

Такі ситуації поширені як у браузері, так і в серверній розробці. Функцію можна запланувати на виконання пізніше, ніж вона створена, наприклад, після дії користувача або запиту мережі.

Отже, виникає питання: чи побачить функція останні зміни?

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

Функція отримує зовнішні змінні такими, якими вони є зараз, тобто вона використовує останні значення.

Старі значення змінних ніде не зберігаються. Коли функція потребує змінної, вона бере поточне значення зі свого власного або зовнішнього лексичного середовища.