Как в addEventListener в функцию передать переменные, если необходимо так же удалять созданный эвент?

Для передачи переменных в функцию обработчика события при использовании addEventListener и возможности последующего удаления созданного события, можно воспользоваться замыканием (closure). Механизм замыкания позволяет сохранить состояние переменных во внешней области видимости и обращаться к ним из внутренней функции даже после завершения выполнения внешней функции.

Вот пример использования замыкания для передачи переменных в функцию обратного вызова события и последующего удаления события:

function handleClick(param1, param2) {
    // Внутренняя функция-обработчик события
    function eventHandler(event) {
        // Здесь можно использовать переданные переменные param1 и param2
        console.log(param1, param2);
        
        // Пример удаления события после его обработки
        event.target.removeEventListener(event.type, eventHandler);
    }
    
    // Добавляем обработчик события с использованием замыкания
    document.addEventListener('click', eventHandler);
}

// Вызов функции handleClick с передачей параметров
handleClick('Hello', 'World');

В этом примере функция handleClick принимает две переменные param1 и param2, которые передаются во внутренний обработчик события eventHandler через замыкание. При клике на документ будет выведено значение переданных параметров, а затем удалено событие клика.

Таким образом, использование замыкания позволяет передавать переменные в функцию обработчика события при использовании addEventListener и при необходимости удаления события после обработки.