Answer
Closures allow functions to retain access to variables in their outer lexical environment, even after the outer function has executed. They are useful for encapsulation, private states, and modular structure in large apps. However, uncontrolled closures can lead to memory leaks when references persist longer than needed. Proper cleanup and scoped design help mitigate risks.