Коротка відповідь
middleПодії у DOM обробляються за принципом FIFO: перша зареєстрована handler‑функція виконується першою. Це забезпечується внутрішнім черговим списком (event queue), де нові події додаються в кінець, а обробка йде з початку.
Повне пояснення
У браузері кожна подія (наприклад, click, mouseover) ставиться у глобальну чергу event queue. 1️⃣ Що це і навіщо – черга дозволяє асинхронно обробляти взаємодії користувача без блокування UI. 2️⃣ Ключові принципи – FIFO (first‑in, first‑out) гарантує, що події обробляються у тому порядку, в якому вони були отримані. 3️⃣ Як це працює – коли користувач виконує дію, браузер створює об’єкт події і вставляє його в кінець черги. Потім event loop береться з початку черги, викликає відповідний handler і переходить до наступної. 4️⃣ Практика – у JavaScript це видно, коли додаємо кілька listeners на один елемент: вони виконуються послідовно. 5️⃣ Тестування – можна перевірити порядок за допомогою Jest + jsdom, логуючи console.log у кожному handler‑і. 6️⃣ Оптимізація – використання event delegation допомагає зменшити кількість listeners, але порядок обробки залишається FIFO. 7️⃣ Edge cases – якщо handler викликає event.stopImmediatePropagation(), наступні listeners не будуть виконані, але порядок обробки залишиться незмінним для тих, що ще не були викликані. 8️⃣ Часті помилки – неправильне розуміння, що обробка буде LIFO; це трапляється при використанні стеку для власних логічних структур, але не в DOM‑черзі. 9️⃣ Дизайн‑рішення – для критичних UI реакцій можна використовувати requestAnimationFrame або setTimeout(…, 0) для розподілу обробки між кадрами, але це не змінює FIFO‑принципу черги подій.