A closure is a function bundled with references to its lexical environment, allowing inner functions to keep using outer scope bindings even after the outer function returns.
When a function is defined, JavaScript stores a link to the scope where that function was created. That scope link is lexical and does not depend on how the function is later called.
If the function outlives the scope where it was declared, JavaScript preserves the needed bindings so the function can still access them. This preserved access is closure behavior.
Closures are fundamental for private state, function factories, memoization, and module patterns where internal details should not be exposed globally.
Interview framing: define Closures in one sentence, then explain one concrete runtime behavior and one common pitfall with a short code example.