Встречается на собеседованиях • сегодня

Какой this у Callback при вызове через setTimeout

В колбэке, переданном в setTimeout, this по умолчанию будет ссылаться на глобальный объект (window в браузере, global в Node.js). Это происходит из-за того, что колбэк вызывается как обычная функция, а не как метод объекта.

javascript
const obj = {
  name: 'Test',
  greet() {
    setTimeout(function() {
      console.log(this.name); // undefined (this === window)
    }, 100);
  }
};

obj.greet();

Чтобы сохранить контекст, можно использовать:

  1. Стрелочную функцию (наследует this из окружающего контекста)
  2. Явную привязку через bind
  3. Сохранение this в переменную (например, self или that)

Пример с стрелочной функцией:

javascript
const obj = {
  name: 'Test',
  greet() {
    setTimeout(() => {
      console.log(this.name); // 'Test'
    }, 100);
  }
};
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы