Я создаю несколько кнопок в цикле. Каждой кнопке присваиваю номер, равный индексу цикла. Потом добавляю обработчик клика, который должен выводить этот номер.
Проблема в том, что при клике все кнопки выводят 4 вместо своего номера. Как это исправить, чтобы каждая кнопка показывала правильный номер?
я сталкивался с похожей проблемой! тут дело в замыкании - функция-обработчик клика сохраняет ссылку на переменную кнопка, а не на ее значение. попробуй использовать IIFE (immediately invoked function expression), чтобы создать отдельную область видимости для каждой итерации цикла:
в твоем случае проблема не в замыкании, а в том, что ты используешь let внутри цикла for. let создает блочную область видимости, поэтому для каждой итерации создается новая переменная j. просто замени let на var: