у тебя две функции, основная makeCOunter - со своей областью видимости и возвращаемая анонимная (вложенная) функция, при вызове анонимной вложенной функции переменная count для этой функции находится во внешней области видимости (лексическая область видимости) и "запоминается" при вызове, те. срабатывает замыкание, Переменная является внешней для вложенной анонимной функции, а вложенные функции имеют доступ к переменным объявленным во внешей области видимости