Учитывает ли функция последние изменения?
важность: 5
Функция sayHi
использует имя внешней переменной. Какое значение будет использоваться при выполнении функции?
let name = "John";
function sayHi() {
alert("Hi, " + name);
}
name = "Pete";
sayHi(); // что будет показано: "John" или "Pete"?
Такие ситуации встречаются как при разработке для браузера, так и для сервера. Функция может быть назначена на выполнение позже, чем она была создана, например, после действия пользователя или сетевого запроса.
Итак, вопрос: учитывает ли она последние изменения?
Ответ: Pete.
Функция получает внешние переменные в том виде, в котором они находятся сейчас, она использует самые последние значения.
Старые значения переменных нигде не сохраняются. Когда функция обращается к переменной, она берет текущее значение из своего или внешнего лексического окружения.