Частью чего является Event Loop: движка или среды выполнения

«Частью чего является Event Loop: движка или среды выполнения» — вопрос из категории Асинхронность, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Event Loop — это часть среды выполнения (runtime), а не движка JavaScript.

Движок (например, V8) выполняет синхронный код и управляет стеком вызовов (Call Stack).
Среда выполнения (браузер, Node.js) предоставляет Web APIs (или Node APIs), очередь микрозадач (Microtask Queue) и очередь макрозадач (Task Queue). Event Loop координирует их работу, проверяя, когда стек пуст, и перемещая задачи из очередей в стек.

Пример:

console.log('Start');  

setTimeout(() => console.log('Timeout'), 0);  

Promise.resolve().then(() => console.log('Promise'));  

console.log('End');  

Вывод:

Start  
End  
Promise  
Timeout  

Здесь setTimeout (макрозадача) и Promise (микрозадача) обрабатываются Event Loop'ом.