Какое из сообщений будет выведено первым?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
В JavaScript, setTimeout(func, delay)
берет функцию func
и откладывает ее выполнение на delay
миллисекунд.
Может показаться, что так как задержка 0
, то функция должна быть выполнена немедленно, но это не так.
Функция будет помещена в очередь сообщений и выполнится асинхронно. Это произойдет только после того, как завершится текущий синхронный код.
Функция console.log
во второй строке является частью синхронного кода, поэтому она выполнится раньше, чем console.log
из таймаута в первой строке.
В большинстве браузеров у setTimeout(f, 0)
есть задержка около 3 ms
которая определяется скоростью внутренней обработки JavaScript кода.
ОТВЕТ: Сначала будет напечатано сообщение plain log
, а потом - timeout log
.