🚨 A 4-line JavaScript snippet that still confuses experienced developers… Consider this code: Using var It logs: 4 4 4 4 Using let It logs: 0 1 2 3 Same loop. Same setTimeout. Same delay. But the output changes completely. So what’s actually happening behind the scenes? When you use var, the variable is function-scoped, not block-scoped. The loop runs synchronously and completes instantly. By the time setTimeout callbacks execute (even with 0ms delay), the loop has already finished and i has become 4. All callbacks reference the same shared variable, so they all print 4. But when you use let, JavaScript creates a new block-scoped binding for every iteration of the loop. That means each setTimeout callback captures its own copy of i: Iteration 1 → i = 0 Iteration 2 → i = 1 Iteration 3 → i = 2 Iteration 4 → i = 3 So when the callbacks execute, they remember the correct values. 💡 This tiny difference reveals two powerful JavaScript concepts: • Scope (function vs block) • Closures + Event Loop behavior And this is why understanding how JavaScript executes code internally matters far more than memorizing syntax. Sometimes the smallest snippets reveal the deepest fundamentals of the language. If you're preparing for interviews or leveling up your JavaScript fundamentals, this is one of those questions that separates syntax knowledge from runtime understanding. 🔥 Have you ever been in such situation where you got confused about this? #JavaScript #FrontendDevelopment #WebDevelopment #Programming #SoftwareEngineering #JSConcepts #EventLoop #Closures #Developers #100DaysOfCode
JavaScript var vs let scope confusion
More Relevant Posts
-
5 JavaScript concepts that make everything else click. Learn these deeply and frameworks stop being magic. 1. Closures A function that remembers the scope it was created in. This is how callbacks, event listeners, and setTimeout actually work. Not understanding closures = constant bugs you can't explain. 2. The Event Loop JavaScript is single-threaded. The event loop is how async code doesn't block everything else. If you've ever wondered why setTimeout(fn, 0) still runs after synchronous code — this is why. 3. Prototypal Inheritance Every object in JS has a prototype chain. Classes are just syntax sugar over this. Knowing this means you understand how methods are shared and where "cannot read properties of undefined" is actually coming from. 4. this - and how it changes 'this' is not fixed. It depends on how a function is called, not where it's defined. Arrow functions inherit 'this' from their enclosing scope. Regular functions create their own. This one trips up everyone. 5. Promises and the microtask queue Promises don't just "make async code cleaner." They run in the microtask queue, which runs before the next macrotask (setTimeout). Understanding this makes async debugging dramatically easier. Which of these gave you the biggest headache? 👇 #webdeveloper #coding #javascript
To view or add a comment, sign in
-
-
🚀 Understanding How async / await Actually Works in JavaScript (Event Loop Explained) While revising JavaScript fundamentals, I wanted to deeply understand what actually happens internally when JavaScript encounters async/await. Many explanations simplify it, but the real execution flow becomes clearer when we look at it from the event loop perspective. Example: console.log("A") async function test(){ console.log("B") await Promise.resolve() console.log("C") } test() console.log("D") Execution Process 1️⃣ JavaScript starts executing the script line by line. 2️⃣ When the async function is called, it starts executing like normal synchronous code. 3️⃣ The function continues running until JavaScript encounters the first await. 4️⃣ At await, the async function pauses execution. 5️⃣ The remaining part of the function (the code after await) is scheduled to resume later as a microtask once the awaited promise resolves. 6️⃣ Control returns back to the main call stack, and JavaScript continues executing the rest of the synchronous code. 7️⃣ After the call stack becomes empty, the event loop processes the microtask queue, and the paused async function resumes execution. Output of the Code A B D C Key Insight async/await does not block JavaScript execution. Instead: • await pauses the async function • the rest of the function is scheduled as a microtask • JavaScript continues running other synchronous code • the async function resumes once the call stack becomes empty This is why async/await feels synchronous while still being completely non-blocking. Understanding this helps connect several important JavaScript concepts together: • Promises • Event Loop • Call Stack • Microtask Queue • Asynchronous Execution Still exploring deeper JavaScript internals every day. Always fascinating to see how much happens behind such simple syntax. Devendra Dhote Sarthak Sharma Ritik Rajput #javascript #webdevelopment #frontenddevelopment #asyncawait #eventloop #programming #coding #developers #100daysofcode #learninpublic #javascriptdeveloper #softwaredevelopment #tech #computerscience #reactjs #nodejs #mernstack #devcommunity #codingjourney
To view or add a comment, sign in
-
🚀 JavaScript Fundamentals Series — Part 4 Functions are where JavaScript becomes powerful and reusable. Instead of repeating code, functions let you create reusable logic blocks. In this guide you'll learn: • What functions actually are • Parameters vs arguments • Return values • Function declarations vs expressions • How functions organize your code Functions are the foundation of almost everything in JavaScript. Full guide 👇 https://lnkd.in/dtgFaW2r #javascript #webdevelopment #coding
To view or add a comment, sign in
-
Revisiting the JavaScript Event Loop Sometimes going back to fundamentals is just as important as building new things. Today I revisited how the JavaScript Event Loop works a concept we use daily but don’t always think about deeply. A quick refresher: • JavaScript runs on a single-threaded call stack • Async operations are handled outside the main thread • Completed tasks move into queues • The Event Loop executes them when the call stack is empty One thing worth remembering: Promises (microtasks) are always prioritized over callbacks like setTimeout Even after working with async code regularly, understanding why things execute in a certain order is what really helps in debugging and writing better code. 📖 Article: https://lnkd.in/dnYVfHrQ #JavaScript #NodeJS #EventLoop #AsyncProgramming #BackendDevelopment
To view or add a comment, sign in
-
💡 Understanding Scope in JavaScript One of the most important concepts in JavaScript is Scope. Scope defines where variables can be accessed in your code. There are three main types of scope in JavaScript: 🔹 Global Scope Variables declared outside any function are accessible anywhere in the program. let name = "Muneeb"; function showName() { console.log(name); } showName(); // Accessible because it's global 🔹 Function Scope Variables declared inside a function can only be used inside that function. function greet() { let message = "Hello"; console.log(message); } greet(); // console.log(message); ❌ Error 🔹 Block Scope Variables declared with "let" and "const" inside "{ }" are only accessible within that block. if (true) { let age = 25; console.log(age); } // console.log(age); ❌ Error 📌 Understanding scope helps developers write cleaner code and avoid bugs related to variable access. Mastering these fundamentals makes JavaScript much easier to understand and improves problem-solving skills. #JavaScript #WebDevelopment #FrontendDeveloper #Coding #LearnToCode
To view or add a comment, sign in
-
🚀 5 Advanced JavaScript Concepts Every Developer Should Understand As you move beyond the basics in JavaScript, understanding some deeper concepts becomes very important. These concepts help you write better code, debug complex issues, and understand how JavaScript actually works behind the scenes. Here are 5 advanced JavaScript concepts every developer should know. 1️⃣ Closures Closures occur when a function remembers variables from its outer scope even after that outer function has finished executing. They are commonly used in callbacks, event handlers, and data privacy patterns. 2️⃣ The Event Loop JavaScript is single threaded, but it can still handle asynchronous operations through the Event Loop. Understanding the call stack, task queue, and microtask queue helps explain how asynchronous code runs. 3️⃣ Debouncing and Throttling These techniques control how often a function executes. They are extremely useful when handling events like scrolling, resizing, or search input to improve performance. 4️⃣ Prototypal Inheritance Unlike many other languages, JavaScript uses prototypes to enable inheritance. Understanding prototypes helps you understand how objects share properties and methods. 5️⃣ Currying Currying is a functional programming technique where a function takes multiple arguments one at a time. It allows you to create more reusable and flexible functions. Mastering concepts like these helps developers move from simply writing JavaScript to truly understanding how it works. Which JavaScript concept took you the longest to understand? #JavaScript #WebDevelopment #Programming #Developers #FrontendDeveloper
To view or add a comment, sign in
-
-
🚀 Mastering Closures in JavaScript – A Real-World Example One of the most powerful (and often misunderstood) concepts in JavaScript is the closure. Think of it as a backpack 🎒 that an inner function carries, filled with variables from its outer function—even after the outer function has finished running. Here’s a neat example: function logWithPrefix(prefix: string): (message: string) => void { // Inner function remembers 'prefix' return function (message: string) { log(`${prefix} | ${message}`); }; } // Create loggers with different "backpacks" const infoLogger = logWithPrefix('INFO'); const errorLogger = logWithPrefix('ERROR'); infoLogger('Hello World!'); // Output: "INFO | Hello World!" errorLogger('Something went wrong!'); // Output: "ERROR | Something went wrong!" function log(message: string): void { console.log(message); } 💡 What’s happening here? logWithPrefix creates a closure. The inner function remembers the prefix variable, even after logWithPrefix has returned. This allows us to build reusable, context-aware loggers (INFO, ERROR, etc.) without repeating code. 👉 Closures are everywhere: event handlers, callbacks, and even frameworks like React rely on them. Once you grasp this, you unlock a new level of JavaScript power. 🔑 Takeaway: Closures = memory + reusability + cleaner code. ✨ If you found this useful, imagine how closures can simplify your next project. Keep experimenting, and you’ll see them pop up more often than you think! #JavaScript #TypeScript #Closures #WebDevelopment #CleanCode #InterviewPrep #LearningEveryday #TechLeadership
To view or add a comment, sign in
-
-
🚀 Understanding the JavaScript Event Loop (Clearly & Practically) | Post 2 JavaScript is single-threaded — yet it handles asynchronous tasks like a pro. The secret behind this is the Event Loop 🔁 --- 📌 What is the Event Loop? The Event Loop is a mechanism that continuously checks: 👉 “Is the Call Stack empty?” If yes, it pushes pending tasks into execution. --- 🧩 Core Components 🔹 Call Stack Executes synchronous code line by line. 🔹 Web APIs (Browser / Node.js) Handles async operations like: - setTimeout - API calls - File operations 🔹 Callback Queue Stores callbacks once async tasks are completed. 🔹 Event Loop Moves callbacks from the queue to the Call Stack when it's free. --- 🔁 How It Works 1. Execute synchronous code 2. Send async tasks to Web APIs 3. Once done → push to Callback Queue 4. Event Loop checks → moves to Call Stack --- 🧠 Example console.log("Start"); setTimeout(() => { console.log("Async Task"); }, 0); console.log("End"); 👉 Output: Start → End → Async Task Even with "0ms", async tasks wait until the stack is empty. --- ⚡ Important Concept 👉 Microtasks vs Macrotasks ✔️ Microtasks (High Priority) - Promise.then - async/await ✔️ Macrotasks - setTimeout - setInterval 📌 Microtasks always execute before macrotasks. --- 🎯 Why You Should Care Understanding the Event Loop helps you: ✅ Write non-blocking, efficient code ✅ Debug async behavior easily ✅ Build scalable applications ✅ Crack JavaScript interviews --- 💬 Mastering this concept is a game-changer for every JavaScript developer. #JavaScript #EventLoop #WebDevelopment #NodeJS #Frontend #Programming #SoftwareEngineering
To view or add a comment, sign in
-
-
Objects are the backbone of JavaScript! 🧩 I just published a blog on JavaScript Objects. In this post: ✅ Key–Value pairs ✅ Dot vs Bracket notation ✅ Adding, updating, and deleting properties Read it here 👇 👉 https://lnkd.in/e94afMk4 #JavaScript #WebDev #LearningInPublic #Coding
To view or add a comment, sign in
-
🚀 Day 5 / 100 — JavaScript Concepts That Every Developer Should Understand #100DaysOfCode Today I revised two very important JavaScript concepts that often come up in interviews and real-world debugging: 🔐 1. Closures A closure happens when a function remembers variables from its outer scope even after the outer function has finished executing. In simple words: A function carries its environment with it. Example: function outer() { let count = 0; function inner() { count++; console.log(count); } return inner; } const counter = outer(); counter(); // 1 counter(); // 2 counter(); // 3 Why this works: Even though outer() has finished running, inner() still remembers the variable count. 📌 Common use cases • Data privacy • Function factories • React hooks • Event handlers 🧠 2. Call Stack The call stack is how JavaScript keeps track of function execution. It works like a stack (Last In, First Out). Whenever a function runs: 1️⃣ It gets pushed onto the stack 2️⃣ When it finishes, it gets popped off Example: function one() { two(); } function two() { three(); } function three() { console.log("Hello from the call stack"); } one(); Execution order in the call stack: Call Stack three() two() one() global() Then it unwinds after execution. 📌 Understanding the call stack helps with: • Debugging errors • Understanding recursion • Avoiding stack overflow 💡 Key realization today: JavaScript is single-threaded, and concepts like closures + call stack explain a lot about how the language actually works behind the scenes. Mastering these fundamentals makes async JS, promises, and the event loop much easier later. 🔥 Day 5 completed. 95 days to go. If you're also learning to code, comment “100” and let’s stay consistent together 🤝 #javascript #100daysofcode #webdevelopment #coding #developers #programming #learninpublic #buildinpublic #SheryiansCodingSchool #Sheryians
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
Well explained bhaiya, this is core fundamental of JavaScript. 👍