Столкнулся с неочевидной проблемой логики. Консоль на предмет ошибок упорно молчит, нейросеть ничего внятного по этому вопросу ответить не смогла, а я в упор не вижу причин ошибки.
function disco(delay) {
setTimeout(function tick() {
document.body.style.backgroundColor = "red";
setTimeout(() => {
document.body.style.backgroundColor = "green";
tick();
}, delay);
}, delay);
}
disco(1000);
Код - простое баловство во время изучения работы таймеров, но мне бы очень хотелось понять причины подобного поведения.
По задумке функция
tick() должна зацикливаться из-за вызова вложенной безымянной функции в setTimeout, при этом менять цвет фона. Но на практике вложенный таймер даже не срабатывает, цвет фона остается красным, хотя если закомментировать вызов
tick() , то таймер срабатывает, вызывая безымянную функцию, меняющую цвет фона на зеленый. Естественно уже без рекурсии.
Очень хотелось бы понять пробелы в своей логике, буду благодарен если кто-то обьяснит причины такого контринтуитивного для меня поведения