Сергей Ракипов,
по ссылке даже пример есть, какое значение имеет i в каждый момент работы функции callback, в вашем случае это createCollapse. |
Тут не только про forEach, тут и про замыкания надо знать.
https://learn.javascript.ru/closure https://developer.mozilla.org/ru/doc...cript/Closures |
Ладно я не буду донимать.
Я читаю и не только эти ресурсы в ссылках. И я знаю что значит i это индекс или порядковое число элемента, начинается с нуля. Мой вопрос не в этом был. Просто логику не понимаю JS как он решает . Ну ладно с практикой наберусь. |
Так логика как раз и связана с замыканием.
Есть функция, которая вызывается внутри 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,
Очень доходчиво спасибо |
Часовой пояс GMT +3, время: 14:16. |