Scope is where variables are visible. A closure is a function remembering variables from its creation environment.
Lexical scope
Inner functions see outer bindings—scope determined by source structure, not call stack alone.
Closure example
Counter factory returns a function that still sees let n after outer returns—used in modules and event handlers.
Important interview questions and answers
- Q: Closure use case?
A: Private state, partial application, memoization. - Q: Loop var bug?
A: Classic var in loop + setTimeout—use let or IIFE.
Self-check
- Define closure in one sentence.
- Why let in loops with async?
Challenge
Closure counter
- Run the counter factory example.
- Call the returned function three times.
- Explain why count persists in a comment above printOutput.
Done when: you can explain closure in one sentence.
Interview prep
- Closure?
Function plus remembered outer variables.