Для создания приватных переменных и методов, сохранения состояния функций между вызовами, реализации паттерна Module, каррирования и частичного применения функций. Замыкание формируется, когда внутренняя функция сохраняет доступ к лексическому окружению внешней функции даже после завершения ее выполнения.
javascript