# Understanding JavaScript Closures Through Call Stack, Heap Memory & `[[Scopes]]` (opens in new tab)
Closures aren't magic—they're simply JavaScript's way of keeping data alive when a function still needs it. Every JavaScript developer has heard statements like: "A closure is a function that remembers variables from its outer scope." "The inner function closes over variables." "Closures preserve the lexical environment." But... How does a function actually remember variables? Where are those variables stored after the outer function finishes? Why doesn't JavaScript delete them? Let's go beyo...
Read the original article