Показать сообщение отдельно
  #24 (permalink)  
Старый 22.02.2023, 07:24
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,712

Так логика как раз и связана с замыканием.
Есть функция, которая вызывается внутри forEach
const createCollapse = (button, i) => {
 
            button.addEventListener('click', () => {
                content[i].classList.toggle('collapse__content_open')
            })
        }

Она вызывается два раза. Первый раз i = 0, второй раз i = 1.
Внутри нее создается функция
() => {
                content[i].classList.toggle('collapse__content_open')
            }

Каждый раз создается новая функция. Они использует это i. Но каждая из них использует то i, которое было в ее лексическом окружении в момент создания этой функции. (Это и называется замыканием)
Получаются две функции. Одна (для первого дива)
() => {
                content[0].classList.toggle('collapse__content_open')
            }

Другая (для второго дива)
() => {
                content[1].classList.toggle('collapse__content_open')
            }

Последний раз редактировалось voraa, 22.02.2023 в 07:26.
Ответить с цитированием