# Understanding JavaScript Closures Through Call Stack, Heap Memory & `[[Scopes]]`
The article discusses JavaScript closures, explaining how they work and what happens behind the scenes. It describes the role of the call stack and heap memory in storing variables and how closures preserve the lexical environment. The article provides examples and visualizations to help illustrate the process of creating and using closures.
- ▪Closures are a way for JavaScript to keep data alive when a function still needs it.
- ▪The call stack and heap memory are two important memory areas involved in the execution of functions.
- ▪Closures preserve the lexical environment, allowing variables to survive after a function finishes executing.
Opening excerpt (first ~120 words) tap to expand
try { if(localStorage) { let currentUser = localStorage.getItem('current_user'); if (currentUser) { currentUser = JSON.parse(currentUser); if (currentUser.id === 3943940) { document.getElementById('article-show-container').classList.add('current-user-is-article-author'); } } } } catch (e) { console.error(e); } Gaurav Singh Posted on Jun 26 # Understanding JavaScript Closures Through Call Stack, Heap Memory & `[[Scopes]]` #javascript #closure #callstack #heapmemory 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...
…
Excerpt limited to ~120 words for fair-use compliance. The full article is at DEV.to (Top).