Сегодня мы разберём что же такое замыкания в JavaScript и как они работают. Это тема, в которой теряются не только новички, но и даже более опытные разработчики. Поэтому предлагаю разобрать её детально. Пример работы замыканий Введём сначала функцию высшего порядка changeBalance(). Это функция, которая возвращает другую функцию: Внутри объявим переменную balance, которая изначально будет равна 0: И вернём из этой функции новую анонимную функцию, в которую мы передадим аргументом sum и в результате изменим balance на эту сумму: Теперь посмотрим на ту магию, которая нам позволяет делать замыкание в случае такого использовании функции. Создадим константу change, которая будет вызовом функции changeBalance(). change теперь станет функцией, которую мы описали выше. То есть функцией, которая примет sum и поменяет balance: Давайте теперь посмотрим на её поведение, когда попытаемся вызвать эту функцию. Чтобы посмотреть на результат после изменения баланса выведем его в консоль: Вывод в ко