Встречается на собеседованиях • сегодня
Какой 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();Чтобы сохранить контекст, можно использовать:
- Стрелочную функцию (наследует
thisиз окружающего контекста) - Явную привязку через
bind - Сохранение
thisв переменную (например,selfилиthat)
Пример с стрелочной функцией:
javascript
const obj = {
name: 'Test',
greet() {
setTimeout(() => {
console.log(this.name); // 'Test'
}, 100);
}
};
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы