Что делает setTimeout при значении 0 миллисекунд?

В JavaScriptsetTimeout(callback, delay) означает "вызовcallback послеdelay миллисекунды ". Но что еслиdelay является0? Должен ли он позвонитьcallback сразу?

Я запутался из-за того, что вижу, когда запускаю следующий код:

setTimeout(function() { 
    console.log('AAA');
}, 0); // Call this in 0 milliseconds 

for (i = 0; i < 1000; i++) {
    console.log('BBB'); 
}
for (i = 0; i < 1000; i++) {
    console.log('CCC'); 
}
for (i = 0; i < 1000; i++) {
    console.log('DDD'); 
}
for (i = 0; i < 1000; i++) {
    console.log('EEE'); 
}

Это записывает в консоль следующее:

Я ожидал увидетьAAA вошел гораздо раньше, чем это. Было время выполнить 4000 других звонковconsole.log перед функцией, которая должна была быть вызвана немедленно.

Может кто-нибудь объяснить, чтоsetTimeout делает, когда задержка установлена ​​на 0 миллисекунд?

Ответы на вопрос(1)

Ваш ответ на вопрос