JavaScript var vs let scope confusion

🚨 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

  • No alternative text description for this image

Well explained bhaiya, this is core fundamental of JavaScript. 👍

To view or add a comment, sign in

Explore content categories