Как мне передать это во внутреннюю функцию?
Какой this
?Функции стрелок принимают контекст (this
) своих родительских функций, который в данном случае является глобальной областью действия, и для этого this
указывает на window
.Если вы хотите вызывать функцию динамически в определенном контексте (это то, что делают addEventListener
), вы должны использовать обычный function
.
Передается ли контекст setTimeout какэто проверить AndRespond?
Нет.Вы должны .bind
контекст вручную:
button.addEventListener("click", function() { // <- now we can work with this here
setTimeout(checkAndRespond.bind(this), 1500); // <- and bind it
});
Или вы используете поведение функций стрелок, как описано выше, и передаете this
в качестве аргумента:
button.addEventListener("click", function() {
setTimeout(() => checkAndRespond(this), 1500);
});
async function checkAndRespond(button) {
//...
}
Sidenotes:
Вы также можете просто использовать button
вместо this
, но это, вероятно, будет слишком просто.
checkAndRespond =
- необъявленная (!!) переменная, всегда объявляйте их!