Вопрос проверяет понимание того, что таймеры в браузере работают как “минимальная задержка”, а не точный планировщик.
Короткий ответ
setTimeout не гарантирует выполнение callback ровно через указанное время. Он гарантирует, что callback не выполнится раньше, чем пройдёт заданная задержка. После истечения задержки callback попадает в очередь задач и будет выполнен, когда освободится call stack. На фактическое время влияет нагрузка, блокировки и приоритеты очередей. Поэтому таймер часто срабатывает позже.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.