Где здесь замыкание? О чем вообще речь?

Код:

let user = {
  firstName: "Вася",
  sayHi() {
    alert(`Привет, ${this.firstName}!`);
  }
};

setTimeout(function() {
  user.sayHi(); // Привет, Вася!
}, 1000);

К этому коду есть описание, которое мне непонятно:

код работает корректно, так как объект user достаётся из замыкания, а затем вызывается его метод sayHi.

Как function() { ... } помогает вызвать метод sayHi()?
  • Вопрос задан
  • 720 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
В коде создаётся анонимная функция, которая передаётся как параметр в setTimeout().
Тело этой функции имеет доступ не только к своим параметрам (в данном случае их нет) и к своим локальным переменным, но и к локальным переменным той области видимости, где эта функция объявлена. В нашем случае это user.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы