Вопрос проверяет понимание контекста this в асинхронных функциях.
В обычных функциях this внутри setInterval/setTimeout теряется (становится window/undefined в strict mode). Стрелочные функции сохраняют this из внешнего контекста.
Пример проблемы:
const obj = {
value: 10,
print() {
setTimeout(function() {
console.log(this.value); // undefined (this — глобальный объект)
}, 1000);
}
};
obj.print();Решение 1: Стрелочная функция
const obj = {
value: 10,
print() {
setTimeout(() => console.log(this.value), 1000); // 10
}
};Решение 2: Привязка контекста
setTimeout(function() { console.log(this.value); }.bind(obj), 1000);Вывод:
Стрелочные функции или bind помогают сохранить this.