Сергей Ракипов,
по ссылке даже пример есть, какое значение имеет 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, время: 18:47. |