А может и вообще ничего делать не нужно - переменная живёт в своей области видимости и то, что потом создаётся ещё одна с тем же именем, первой никак не касается.
Зависит от конкретного кода. Можно в свойство объекта записать через this.handler = () => {}, можно глобальный массив или объект обработчиков завести и обращаться по индексу / ключу.
AndrewsN93, ну так формулируйте вопрос нормально; "что то как то не выходит" - это не описание проблемы. При чём тут тогда map и for? Что конкретно у вас вызывает сложности? Вы документацию читали?
Добавил в ответ пример рендеринга.
У вас сам $x в какой-то момент может стать нулём и тогда будет rand(1, 0).
Вероятность этого для 29-3 не очень велика, но есть. Вызовите свою функцию с параметрами 29-29 или просто 1-10 и убедитесь.
Главным образом потому, что они не имеют никакого отношения к решению поставленного вопроса. Вся разница в том, что у стрелочной функции сохраняется контекст, области видимости переменных для них работают точно так же, как и для обычных функций.