У вас почти правильный код. Но закрытие уже создано, когда вы создаете переменную scroll
и вызываете scrollEvent
(после этого scroll
содержит ссылку на возвращаемую функцию), поэтому вам нужно передать только scroll
в addEventListener
, потому что вызывая его просто возвращает undefined
.
Другой способ - опустить scroll
переменную и вызвать scrollEvent
в аргументе, например:
document.addEventListener("scroll", scrollEvent());
Теперь scrollEvent
возвращает функцию для использования в качестве прослушивателя событий, и создается закрытие, и positions
становится доступным в обработчике событий при возникновении события.