Здравствуйте!
Есть вопрос. Не совсем понятен код
let timerId = setTimeout(function tick() {
alert('tick');
timerId = setTimeout(tick, 2000); // (*)
}, 2000);
Откуда вложенный сеттаймаут знает имя функции tick?
если функция объявлена не анонимно, значит у неё есть имя. не вижу ни единой причины, по которой ты не мог бы обратиться к этой функции используя её имя.