---
title: События в JS
seo:
  title: События в JS — React Developer
  description: Тема «События в JS» для собеседования React Developer. Что такое распространение события (Event Propagation)? Что такое всплытие события (Event Bubbling)?
---

[Все темы React Developer](/react-developer)

## Что такое распространение события (Event Propagation)? [#q-14bee738d69b811b834efeb69a5163de]

<code>Event Propagation</code> — это механизм, определяющий порядок, в котором
события обрабатываются в DOM-дереве.

#### Основные фазы&#58;

{/* prettier-ignore */}
1. <strong>Погружение (Capturing)</strong>&#58;

    - Событие начинается с корневого элемента и проходит вниз до целевого элемента.

    - Пример&#58;

        ```javascript
        element.addEventListener('click', handler, true); // true - использовать фазу погружения
        ```

1. <strong>Целевой элемент (Target)</strong>&#58;

    - Событие достигает целевого элемента и обрабатывается.

1. <strong>Всплытие (Bubbling)</strong>&#58;

    - Событие поднимается обратно вверх по дереву от целевого элемента к корневому.

    - Пример&#58;

        ```javascript
        element.addEventListener('click', handler); // По умолчанию false - использовать фазу всплытия
        ```

:::note[Ссылки для изучения]

1. [Браузерные события в JavaScript](https://learn.javascript.ru/introduction-browser-events)
   :::

---

## <strong>Что такое всплытие события (</strong><code>Event Bubbling</code><strong>)?</strong> [#q-14bee738d69b81e3ac13c86f749a88a1]

<code>Event Bubbling</code> — это процесс, при котором событие, сначала
обработанное целевым элементом, поднимается вверх по DOM-дереву, вызывая
обработчики событий на каждом из родительских элементов.

#### Основные характеристики&#58;

{/* prettier-ignore */}
1. <strong>Порядок обработки</strong>&#58;

    - Событие сначала обрабатывается целевым элементом.

    - Затем поднимается (всплывает) к его родительским элементам и далее к корневому элементу.

1. <strong>Пример</strong>&#58;

    ```javascript
    document.getElementById("child").addEventListener("click", function() {
        console.log("Child clicked");
    });

    document.getElementById("parent").addEventListener("click", function() {
        console.log("Parent clicked");
    });

    // При клике на элемент с id "child" сначала будет выведено "Child clicked", затем "Parent clicked"
    ```

Всплытие события позволяет обработчикам событий на родительских элементах реагировать на события, которые произошли на их потомках, начиная с целевого элемента и поднимаясь вверх по DOM-дереву.

:::note[Ссылки для изучения]

1. [Браузерные события в JavaScript](https://learn.javascript.ru/introduction-browser-events)
   :::

---

## <strong>Что такое погружение события (</strong><code>Event Capturing</code><strong>)?</strong> [#q-14bee738d69b8163a5f8d2d570a6d56a]

<code>Event Capturing</code> — это фаза распространения события в DOM, при
которой событие проходит сверху вниз от корневого элемента к целевому элементу.

#### Основные характеристики&#58;

{/* prettier-ignore */}
1. <strong>Порядок обработки</strong>&#58;

    - Событие сначала проходит через корневой элемент и спускается к целевому элементу, обрабатываясь на каждом уровне.

1. <strong>Включение захвата</strong>&#58;

    - Для использования фазы погружения необходимо установить третий параметр в <code>true</code> при добавлении обработчика событий.

    - Пример&#58;

        ```javascript
        document.getElementById("parent").addEventListener("click", function() {
            console.log("Parent clicked");
        }, true);

        document.getElementById("child").addEventListener("click", function() {
            console.log("Child clicked");
        }, true);
        ```

Погружение события позволяет обрабатывать события, начиная с корневого элемента и спускаясь вниз к целевому элементу, до того как событие достигнет целевого элемента.

:::note[Ссылки для изучения]

1. [Браузерные события в JavaScript](https://learn.javascript.ru/introduction-browser-events)
   :::

---

## <strong>Что такое цель события или целевой элемент (</strong><code>event&#46;target</code><strong>)?</strong> [#q-14bee738d69b81358b16ea3aed4faa62]

<code>event&#46;target</code> — это элемент, на котором первоначально произошло
событие.

#### Пример использования&#58;

```javascript
document.getElementById("myButton").addEventListener("click", function (event) {
  console.log(event.target); // Выведет элемент, на котором произошел клик
});
```

<code>event&#46;target</code> указывает на элемент, вызвавший событие, позволяя
обработчику узнать, где именно оно произошло.

:::note[Ссылки для изучения]

1. [Браузерные события в JavaScript](https://learn.javascript.ru/introduction-browser-events)
   :::

---

## <strong>Что такое текущая цель события (</strong><code>event&#46;currentTarget</code><strong>)?</strong> [#q-14bee738d69b81278273cd17d70eaaeb]

<code>event&#46;currentTarget</code> — это элемент, на котором в данный момент
обрабатывается событие.

#### Пример использования&#58;

```javascript
document.getElementById("myButton").addEventListener("click", function (event) {
  console.log(event.currentTarget); // Выведет элемент myButton
});
```

<code>event&#46;currentTarget</code> указывает на элемент, к которому привязан
обработчик события, независимо от того, где произошло событие.

:::note[Ссылки для изучения]

1. [Браузерные события в JavaScript](https://learn.javascript.ru/introduction-browser-events)
   :::
