Why do closed-over variables survive after the outer function returns?
Because the inner function holds a reference to the outer lexical environment. As long as the inner function exists, the environment (and its variables) cannot be garbage collected. The scope chain persists.
Explore This Question
Search for additional explanations using these tools:
More FAQs in The Relationship Between Scope and Closures in JavaScript
Closures are a consequence of lexical scope. A function defined inside another keeps a reference to the outer lexical environment. When the outer function returns, the inner function still has access to those variables via the scope chain.
No. A closure is the combination of a function and its lexical environment (the variables it closes over). The function alone is not the closure; the function plus the retained outer variables is the closure.
No. Each call creates a separate lexical environment. So makeAdder(5) and makeAdder(10) each have their own x. The closures are independent.
Still have questions?
Browse all our FAQs or reach out to our support team
