How JavaScript Memory Model Works: Stack vs Heap Allocation ? (1) Stack stores primitives and references – Fast, LIFO-structured memory for execution contexts, local variables, and primitive values, but limited in size. (2) Heap stores complex data – Larger, slower, unordered memory for objects, arrays, functions, and closures. (3) References connect stack to heap – Variables on the stack hold memory addresses (pointers) that reference data stored in the heap. (4) Primitives live directly on the stack – Values like numbers and strings (when small) are stored inline, while strings and complex types use heap references. (5) Functions are heap-stored with scope – Function bodies reside in the heap, while references and scope chains remain on the stack during execution. Test your JavaScript fundamentals with focused on scope, hoisting, closures, and asynchronous behavior. 💬 Share your answer or reasoning in the comments. #JavaScript #InterviewPreparation #SoftwareEngineering #WebDevelopment #DevelopersOfLinkedIn #frontend #backend #coding #learning
JavaScript Memory Model: Stack vs Heap Allocation
More Relevant Posts
-
🤔 Ever seen RangeError: Maximum call stack size exceeded and wondered what it actually means? It usually comes down to how the call stack works, how recursion grows it, and why every JavaScript engine has depth limits. 🧠 JavaScript interview question What is the call stack, why does recursion have depth limits, and what causes a stack overflow? ✅ Short answer The call stack is where JavaScript keeps track of active function calls. Every recursive call adds a new stack frame. If recursion goes too deep, or never stops, the stack fills up and throws a stack overflow error. 🔍 A bit more detail JavaScript runs code on a single thread and uses the call stack to manage function execution. When one function calls another, a new execution context is pushed onto the stack. When a function finishes, it is popped off and control returns to the caller. With recursion, this push process keeps happening until a base case stops it. That is why a correct base case matters so much. Without it, or with too many nested calls, you eventually hit the engine's stack limit and get: RangeError: Maximum call stack size exceeded Example with a safe base case: function factorial(n) { if (n < 0) throw new Error("Negative values are not allowed"); if (n === 0 || n === 1) return 1; // base case return n * factorial(n - 1); // recursive case } console.log(factorial(5)); // 120 This works because the recursion has a clear stopping point. Here is the kind of pattern that causes stack overflow: function endless(n) { return endless(n + 1); // no base case } ⚠️ Important clarification Infinite recursion is not the only problem. Even valid recursion can fail if the input gets deep enough, because JavaScript engines have limited stack space. That is why for very deep problems, an iterative solution is often safer than recursion. #javascript #webdevelopment #frontend #codinginterview #learninpublic
To view or add a comment, sign in
-
Node.js Worker Threads: True Multi-Threading for Your JavaScript Code Node.js is recognized for its efficient handling of I/O through the Event Loop and the UV_THREADPOOL for system-level tasks. However, when JavaScript code becomes the bottleneck, Worker Threads are essential. 🧠 Core Concepts: - Isolated Execution: Each worker operates in its own V8 instance with separate memory, functioning like lightweight parallel Node.js instances. - True Parallelism: Unlike the Event Loop, which is concurrent, Worker Threads enable parallel execution by utilizing multiple CPU cores. - Message-Based Communication: Workers communicate via postMessage(), ensuring no shared state by default, which reduces race conditions. 🛠 When to use them? - Avoid using Worker Threads for I/O, as the Event Loop is more efficient for that. Instead, utilize them for CPU-bound tasks that could otherwise "freeze" your app: - Heavy Math: Complex calculations or data science in JavaScript. - Data Parsing: Transforming large JSON or CSV files. - Image/Video: Processing buffers or generating reports. Key Takeaway: The Thread Pool manages system tasks, while Worker Threads enhance the performance of your JavaScript code. #NodeJS #Backend #Javascript #WebDev #SoftwareEngineering #Performance
To view or add a comment, sign in
-
-
⚡ Shipped JavaScript & TypeScript support in AI-MR-Reviewer — a GitHub App that reviews your PRs the moment you open them. Inline comments on the diff. Clear severity levels. Zero setup. Built for teams who want fast, reliable feedback without heavy tooling. What lands in this release: ~18 focused JS/TS rules. 🔴 HIGH RISK — 7 rules == / != instead of === / !== Empty catch blocks (silent failures) eval() / new Function() usage innerHTML with dynamic content / dangerouslySetInnerHTML (XSS risk) setTimeout / setInterval with string arguments SQL injection patterns in .query() / .exec() (concat / template literals) Hardcoded secrets (API keys, tokens, passwords in code) 🟡 MID RISK — 7 rules console.log / debug statements in production var usage instead of let/const TypeScript any type usage // @ts-ignore / // @ts-nocheck Non-null assertions (!) on property access new Date() without timezone awareness Promises without .catch() or not awaited 🔵 LOW RISK — 4 rules TODO / FIXME comments left behind Numbered function names (handler2, doThing3) require() used inside ES modules Magic numbers outside constants Every rule is tuned to minimize noise and maximize real signal — so developers focus only on what actually matters. Under the hood: TypeScript · Node.js · Octokit · Express · Docker Reviews land within seconds of opening a PR. Next up: deeper semantic checks on top of this — smarter detection, fewer false positives, and richer context. If your team works with JS/TS daily, this removes friction from every PR. 🚀 Launching publicly by this Sunday, InshaAllah. #JavaScript #TypeScript #CodeReview #DeveloperTools #AI #StaticAnalysis #DevEx #OpenSource
To view or add a comment, sign in
-
-
🧠 𝗗𝗼 𝗬𝗼𝘂 𝗥𝗲𝗮𝗹𝗹𝘆 𝗞𝗻𝗼𝘄 𝗪𝗵𝗮𝘁 `new` 𝗗𝗼𝗲𝘀 𝗜𝗻 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁? ⤵️ The new Keyword in JavaScript: What Actually Happens ⚡ 🔗 𝗥𝗲𝗮𝗱 𝗵𝗲𝗿𝗲: https://lnkd.in/dyAXzDHD 𝗧𝗼𝗽𝗶𝗰𝘀 𝗰𝗼𝘃𝗲𝗿𝗲𝗱 ✍🏻: ⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺⎺ ⇢ What actually happens internally when you use `new` ⇢ The 4-step process: create → link → run → return ⇢ Constructor functions & how they really work ⇢ Prototype linking & why it matters ⇢ How instances share methods but keep separate data ⇢ Recreating `new` manually (deep understanding) ⇢ What goes wrong when you forget `new` ⇢ Debugging real-world bugs related to constructors ⇢ new vs ES6 classes — what's really different ⇢ Key tradeoffs & hidden pitfalls Thanks Hitesh Choudhary Sir & Piyush Garg Sir, and the amazing Chai Aur Code community 🙌 #ChaiAurCode #JavaScript #WebDevelopment #Programming #SystemDesign #Frontend #Hashnode
To view or add a comment, sign in
-
🚀 Implementing Tail-Recursive Factorial (JavaScript) (Data Structures And Algorithms) While JavaScript engines aren't guaranteed to optimize tail calls, demonstrating the pattern is still valuable. This example shows how to rewrite the factorial function in a tail-recursive style using an accumulator. The accumulator stores the intermediate result, which is then passed along with each recursive call. When the base case is reached, the accumulator contains the final result, avoiding further operations after the recursive call. #Algorithms #DataStructures #CodingInterview #ProblemSolving #professional #career #development
To view or add a comment, sign in
-
-
𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗦𝗵𝗮𝗹𝗹𝗼𝘄 𝗖𝗼𝗽𝘆 𝘃𝘀 𝗗𝗲𝗲𝗽 𝗖𝗼𝗽𝘆 📦 If you’ve ever updated state and something weird happened… this might be why 👇 🔹 Shallow Copy → copies only the first level 🔹 Nested objects are still referenced (same memory) Example: ➡️ Using { ...obj } or Object.assign() 💡 Problem: Change a nested value… and you might accidentally mutate the original object 😬 🔹 Deep Copy → copies everything (all levels) 🔹 No shared references 🔹 Safe to modify without side effects Example: ➡️ structuredClone(obj) ➡️ or libraries like lodash ⚠️ The common pitfall: You think you made a copy: ➡️ { ...user } But inside: ➡️ user.address.city is STILL linked So when you update it: ❌ You mutate the original state ❌ React may not re-render correctly ❌ Bugs appear out of nowhere 🚀 Why this matters (especially in React): State should be immutable ➡️ Always create safe copies ➡️ Avoid hidden mutations ➡️ Keep updates predictable 💡 Rule of thumb: 🔹 Flat objects? → shallow copy is fine 🔹 Nested data? → consider deep copy Understanding this difference = fewer bugs + cleaner state management And yes… almost every developer gets burned by this at least once 😄 Sources: - JavaScript Mastery - w3schools.com Follow 👨💻 Enea Zani for more #javascript #reactjs #webdevelopment #frontend #programming #coding #developers #learnjavascript #softwareengineering #100DaysOfCode
To view or add a comment, sign in
-
-
Maps and Sets in JavaScript: A Deep Dive JavaScript provides several ways to store and manage data, with objects and arrays being the most commonly used structures. However, when dealing with unique values or key-value pairs with better effi Read more → https://lnkd.in/dvP2-4nH #TheCampusCoders #Tech #Developers #WebDev
To view or add a comment, sign in
-
Maps and Sets in JavaScript: A Deep Dive JavaScript provides several ways to store and manage data, with objects and arrays being the most commonly used structures. However, when dealing with unique values or key-value pairs with better effi Read more → https://lnkd.in/dvP2-4nH #TheCampusCoders #Tech #Developers #WebDev
To view or add a comment, sign in
-
Maps and Sets in JavaScript: A Deep Dive JavaScript provides several ways to store and manage data, with objects and arrays being the most commonly used structures. However, when dealing with unique values or key-value pairs with better effi Read more → https://lnkd.in/dvP2-4nH #TheCampusCoders #Tech #Developers #WebDev
To view or add a comment, sign in
-
Maps and Sets in JavaScript: A Deep Dive JavaScript provides several ways to store and manage data, with objects and arrays being the most commonly used structures. However, when dealing with unique values or key-value pairs with better effi Read more → https://lnkd.in/dvP2-4nH #TheCampusCoders #Tech #Developers #WebDev
To view or add a comment, sign in
Explore content categories
- Career
- Productivity
- Finance
- Soft Skills & Emotional Intelligence
- Project Management
- Education
- Technology
- Leadership
- Ecommerce
- User Experience
- Recruitment & HR
- Customer Experience
- Real Estate
- Marketing
- Sales
- Retail & Merchandising
- Science
- Supply Chain Management
- Future Of Work
- Consulting
- Writing
- Economics
- Artificial Intelligence
- Employee Experience
- Workplace Trends
- Fundraising
- Networking
- Corporate Social Responsibility
- Negotiation
- Communication
- Engineering
- Hospitality & Tourism
- Business Strategy
- Change Management
- Organizational Culture
- Design
- Innovation
- Event Planning
- Training & Development