Что бы понять что такое замыкания в javaScript необходимо наглядно изучить пример. Создадим переменную number, снаружи функции: Если вызвать функцию func - то она сначала увеличит переменную number на единицу после чего вернет новое значение number: При вызове функции каждый раз она будет выводить на единицу больше. В нашем примере переменная number находится в глобальной области видимости. Из-за этого другая функция может случайно затереть number и функция func перестанет давать правильный результат. Чтобы этого не случилось необходимо написать переменную number внутри функции. Создадим новую функцию counterNum вокруг функции func а саму функцию func сделаем анонимной. При этом функция counterNum будет возвращать эту анонимную функцию. Рассмотрим подробнее, что тут происходит: переменная number является локальной внутри функции counterNum, но при этом она доступна в анонимной функции (это мы видели в предыдущих примерах). В строчке const counter = counterNum() анонимная функция за