## Notes
A `closure` is a function that retains access to its outer function's variables. It "remembers" the environment in which it was created.
```javascript
function outer() {
let outerVar = "I'm in the outer scope";
function inner() {
console.log(outerVar);
outerVar = "Updated";
}
return inner;
}
const closure = outer();
closure(); // I'm in the oute rscope
closure(); // Updated
```
They rely on [[Lexical Scope in JavaScript]]
## References
- [[JavaScript Study MOC]]
- [Closure in JavaScript - Geeks for Geeks](https://www.geeksforgeeks.org/javascript/closure-in-javascript/)