🚨 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗖𝗵𝗲𝗮𝘁𝘀𝗵𝗲𝗲𝘁 𝗩𝗮𝗿 𝘃𝘀 𝗟𝗲𝘁 𝘃𝘀 𝗖𝗼𝗻𝘀𝘁 — 𝗨𝗻𝗱𝗲𝗿𝘀𝘁𝗮𝗻𝗱 𝗶𝗻 𝗢𝗻𝗲 𝗥𝗲𝗮𝗱 👇 Most developers say: ❌ “Hoisting doesn’t work with let and const” But that’s NOT true. 👉 Hoisting happens with var, let, and const. The real difference is how they behave after hoisting. Let’s break it down clearly 👇 🟧 𝗩𝗔𝗥 — Old & Risky • Scope: Function scoped • Hoisting: Yes → initialized with undefined • Re-declaration: ✅ Allowed • Re-assignment: ✅ Allowed • Initialization: Optional ⚠️ Can be accessed before declaration → bug-prone 🟦 𝗟𝗘𝗧 — Modern & Flexible • Scope: Block scoped • Hoisting: Yes → Temporal Dead Zone (TDZ) • Re-declaration: ❌ Not allowed • Re-assignment: ✅ Allowed • Initialization: ✅ Required ❌ Access before initialization → ReferenceError 🟩 𝗖𝗢𝗡𝗦𝗧 — Constant & Fixed • Scope: Block scoped • Hoisting: Yes → Temporal Dead Zone (TDZ) • Re-declaration: ❌ Not allowed • Re-assignment: ❌ Not allowed • Initialization: ✅ Required 🔒 Best choice for fixed values 🚫 𝗔𝘃𝗼𝗶𝗱 𝘃𝗮𝗿 ✅ 𝗨𝘀𝗲 𝗹𝗲𝘁 for changeable values 🔐 𝗨𝘀𝗲 𝗰𝗼𝗻𝘀𝘁 for fixed values 📌 𝗢𝗻𝗲-𝗹𝗶𝗻𝗲 𝗺𝗲𝗺𝗼𝗿𝘆 𝘁𝗿𝗶𝗰𝗸: 👉 var = function scoped + undefined 👉 let = block scoped + TDZ 👉 const = block scoped + no re-assign If this clicks once, your JavaScript scoping confusion disappears 💡 📌 Save this for interview revision 💬 Comment if hoisting or TDZ confused you earlier 👍 Follow for clear JavaScript & React breakdowns #JavaScript #ReactJS #FrontendDevelopment #WebDevelopment #TechInterviews #LearningInPublic
Vivek Dubey’s Post
More Relevant Posts
-
Understanding the JavaScript Event Loop is a game changer for writing efficient asynchronous code. Many developers use setTimeout and Promise daily — but fewer truly understand what happens behind the scenes. Here’s a quick breakdown 👇 🔹 JavaScript is single-threaded 🔹 Synchronous code runs first (Call Stack) 🔹 Then all Microtasks execute (Promises, queueMicrotask) 🔹 Then one Macrotask runs (setTimeout, setInterval, DOM events) 🔹 The loop repeats 📌 Execution Priority: Synchronous → Microtasks → Macrotasks Example: console.log(1); setTimeout(() => console.log(2), 0); Promise.resolve().then(() => console.log(3)); console.log(4); ✅ Output: 1 → 4 → 3 → 2 Understanding this helps in: ✔ Debugging async issues ✔ Optimizing performance ✔ Writing better React applications ✔ Cracking frontend interviews I’ve created a simple infographic to visually explain the entire Event Loop process. If you're preparing for JavaScript or React interviews, mastering this concept is essential. 💬 Now Your Turn 👇 What will be the output of this code? console.log("A"); setTimeout(() => console.log("B"), 0); Promise.resolve().then(() => { console.log("C"); }); console.log("D"); 👨💻 Follow for daily React, and JavaScript 👉 Arun Dubey Drop your answer in the comments 👇 Let’s see who really understands the Event Loop 🔥 #JavaScript #FrontendDevelopment #ReactJS #WebDevelopment #EventLoop #CodingInterview
To view or add a comment, sign in
-
-
JavaScript Output-Based Question What will be logged (line by line)? Comment your answer in order (Don’t run the code) Correct Output: 10 2 undefined undefined Why this output comes? (Step-by-Step) Global scope a = 5; Creates a global variable a.. obj.printA(); • Called as a method of obj • this → obj • this.a → 10 fn(); const fn = obj.printA; fn(); • Function is called without context • this → global object (non-strict mode) • a = 2 updates the global variable a • this.a → 2 obj.printA.call(this); • this explicitly set to global context • But this.a is not a property lookup here • Result → undefined obj.printA.bind(this)(); • bind permanently binds this to global • this.a still doesn’t exist as an object property • Result → undefined Key Takeaways ✔ this depends on how a function is called ✔ Variable assignment ≠ object property ✔ Extracting a method loses its context ✔ call sets this temporarily ✔ bind sets this permanently One wrong assumption about this can break production code. #JavaScript #ThisKeyword #CallBindApply #InterviewQuestions #FrontendDeveloper #MERNStack
To view or add a comment, sign in
-
-
Understanding the JavaScript Event Loop is a game changer for writing efficient asynchronous code. Many developers use setTimeout and Promise daily — but fewer truly understand what happens behind the scenes. Here’s a quick breakdown 👇 🔹 JavaScript is single-threaded 🔹 Synchronous code runs first (Call Stack) 🔹 Then all Microtasks execute (Promises, queueMicrotask) 🔹 Then one Macrotask runs (setTimeout, setInterval, DOM events) 🔹 The loop repeats 📌 Execution Priority: Synchronous → Microtasks → Macrotasks Example: console.log(1); setTimeout(() => console.log(2), 0); Promise.resolve().then(() => console.log(3)); console.log(4); ✅ Output: 1 → 4 → 3 → 2 Understanding this helps in: ✔ Debugging async issues ✔ Optimizing performance ✔ Writing better React applications ✔ Cracking frontend interviews I’ve created a simple infographic to visually explain the entire Event Loop process. If you're preparing for JavaScript or React interviews, mastering this concept is essential. 💬 Now Your Turn 👇 What will be the output of this code? console.log("A"); setTimeout(() => console.log("B"), 0); Promise.resolve().then(() => { console.log("C"); }); console.log("D"); 👉 Learn more with w3schools.com Follow for daily React and JavaScript 👉 MOHAMMAD KAIF #JavaScript #FrontendDevelopment #ReactJS #WebDevelopment #EventLoop #CodingInterview
To view or add a comment, sign in
-
-
Day 62 of me reading random and basic but important dev topicsss..... Today I read about the Resource Loading in JavaScript...... In our day-to-day work building interfaces with React or other modern frameworks, it's easy to take module bundlers for granted. But what happens when we need to dynamically inject a third-party script......like an analytics tracker, a payment SDK, or a support widget.....on the fly? Understanding the vanilla DOM events onload and onerror is a must for any robust front-end architecture. 1. The Dynamic Injection Adding a script dynamically is straightforward: let script = document.createElement('script'); script.src = "third-party.js"; document.head.append(script); But we can't just invoke its functions immediately. The browser needs time to fetch and execute it. 2. script.onload (The Success Path) This event triggers after the script has successfully loaded and executed. This is our green light to safely use the newly available variables or functions. 3. script.onerror (The Failure Path) If the script 404s or the server is down, onerror catches it. However, keep in mind: we won't get HTTP status codes (like 404 or 500) here, just a notification that the network request failed. Loading vs. Execution Here is where we get tripped up: onload and onerror only track the network loading phase. If a script downloads successfully but contains a syntax or runtime error during execution, onload will still fire! To catch those internal execution bugs, we need a different tool entirely: the window.onerror global handler. Keep Learning!!!!! #JavaScript #WebDevelopment #FrontendDev #React #SoftwareEngineering
To view or add a comment, sign in
-
-
𝗪𝗲𝗹𝗰𝗼𝗺𝗲 𝘁𝗼 𝗗𝗮𝘆 𝟴 Have you ever seen JavaScript behave correctly… but still give the wrong output? 🤔 𝘉𝘦𝘧𝘰𝘳𝘦 𝘴𝘤𝘳𝘰𝘭𝘭𝘪𝘯𝘨, 𝘨𝘶𝘦𝘴𝘴 𝘵𝘩𝘦 𝘰𝘶𝘵𝘱𝘶𝘵 𝘰𝘧 𝘵𝘩𝘪𝘴 𝘴𝘪𝘮𝘱𝘭𝘦 𝘤𝘰𝘥𝘦 𝚏𝚘𝚛 (𝚟𝚊𝚛 𝚒 = 𝟷; 𝚒 <= 𝟹; 𝚒++) { 𝚜𝚎𝚝𝚃𝚒𝚖𝚎𝚘𝚞𝚝(() => { 𝚌𝚘𝚗𝚜𝚘𝚕𝚎.𝚕𝚘𝚐(𝚒); }, 𝟷𝟶𝟶𝟶); } 𝗘𝘅𝗽𝗹𝗲𝗰𝘁𝗲𝗱 1, 2, 3 𝗔𝗰𝘁𝘂𝗮𝗹𝗹𝘆 𝗿𝗲𝘀𝘂𝗹𝘁 4,4,4 𝗧𝗵𝗶𝘀 𝗶𝘀 𝗮 𝗰𝗹𝗼𝘀𝘂𝗿𝗲 𝗯𝘂𝗴 — 𝗼𝗻𝗲 𝗼𝗳 𝘁𝗵𝗲 𝗺𝗼𝘀𝘁 𝗰𝗼𝗺𝗺𝗼𝗻 (𝗮𝗻𝗱 𝗰𝗼𝗻𝗳𝘂𝘀𝗶𝗻𝗴) 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗽𝗶𝘁𝗳𝗮𝗹𝗹𝘀. 𝗪𝗵𝘆 𝗧𝗵𝗶𝘀 𝗛𝗮𝗽𝗽𝗲𝗻𝘀 • var is function-scoped • setTimeout creates a closure • All callbacks reference the same variable i • When they execute, the loop has already finished Closures don’t capture values — they capture references. 𝗧𝗵𝗲 𝗙𝗶𝘅 𝚏𝚘𝚛 (𝚕𝚎𝚝 𝚒 = 𝟷; 𝚒 <= 𝟹; 𝚒++) { 𝚜𝚎𝚝𝚃𝚒𝚖𝚎𝚘𝚞𝚝(() => { 𝚌𝚘𝚗𝚜𝚘𝚕𝚎.𝚕𝚘𝚐(𝚒); }, 𝟷𝟶𝟶𝟶); } 𝗪𝗵𝘆 𝘁𝗵𝗶𝘀 𝘄𝗼𝗿𝗸𝘀: • let is block-scoped • Each iteration gets its own binding • Each closure remembers a different i 𝗬𝗼𝘂’𝗹𝗹 𝘀𝗲𝗲 𝘁𝗵𝗶𝘀 𝗽𝗮𝘁𝘁𝗲𝗿𝗻 𝗶𝗻: • Event handlers • Async loops • API callbacks • Timers • React effects If you don’t understand closures, You don’t see the bug — you just debug longer. #JavaScript #JSFundamentals #Closures #FrontendDevelopment #WebDevelopment #BugFixing #ReactJS #LearningInPublic
To view or add a comment, sign in
-
-
Most developers don’t struggle with JavaScript. They struggle with this. Same function. Different call. Completely different value. That’s why: Code works in one place Breaks in another And interviews get awkward 😅 In Part 8 of the JavaScript Confusion Series, I break down this into 3 simple rules you’ll never forget. No textbook theory. Just a clean mental model. 👉 Read it here: https://lnkd.in/gvc_nG37 💬 Comment THIS if you’ve ever been confused by it. 🔖 Save it for interviews. 🔁 Share with a developer who still avoids this. #javascript #webdevelopment #frontend #programming #reactjs #learnjavascript
To view or add a comment, sign in
-
Most developers think closures are some kind of JavaScript “magic”… But the real truth is simpler—and more dangerous. Because if you don’t understand closures: Your counters break Your loops behave strangely Your async code gives weird results And you won’t even know why. Closures are behind: React hooks Event handlers Private variables And many interview questions In Part 7 of the JavaScript Confusion Series, I break closures down into a simple mental model you won’t forget. No jargon. No textbook definitions. Just clear logic and visuals. 👉 Read it here: https://lnkd.in/g4MMy83u 💬 Comment “CLOSURE” and I’ll send you the next part. 🔖 Save this for interviews. 🔁 Share with a developer who still finds closures confusing. #javascript #webdevelopment #frontend #programming #reactjs #learnjavascript #softwareengineering #coding #devcommunity
To view or add a comment, sign in
-
⚡ There’s an invisible engine inside JavaScript Quietly deciding what runs first and what has to wait. That engine is the Event Loop. Most developers use promises, async/await, and setTimeout every day. But very few actually understand how the execution order is decided. That’s why: Logs appear in the “wrong” order Async bugs feel random Event loop questions confuse even experienced devs In Part 6 of the JavaScript Confusion Series, I break down the Event Loop with a simple visual mental model— so you understand it once, and never forget it. Read it here: https://lnkd.in/d_KnvPeV 💬 Comment “LOOP” and I’ll send the next part. 🔖 Save it for interview prep. 🔁 Share with a developer who still fears async code. #javascript #webdevelopment #frontend #programming #reactjs #learnjavascript #softwareengineering
To view or add a comment, sign in
-
🚨 99% of JavaScript Developers FAIL This Question 🚨 (forEach + async = silent production bug) ❌ Looks easy ❌ Feels obvious ❌ Breaks senior interviews ❌ Causes real production bugs No frameworks. No libraries. Just JavaScript fundamentals. 🧩 Output-Based Question (forEach + async) async function test() { [1, 2, 3].forEach(async (n) => { await Promise.resolve(); console.log(n); }); console.log("done"); } test(); ❓ What will be printed to the console? ❌ Don’t run the code 🧠 Think like the JavaScript engine A. 1 2 3 done B. done 1 2 3 C. done only D. Order is unpredictable 👇 Drop ONE option only (no explanations yet 😄) ⚠️ Why this matters Most developers assume: async inside forEach is awaited Loops wait for async work to finish ❌ Both assumptions are wrong When this mental model isn’t clear: Logs appear “out of order” API calls finish after UI updates Bugs slip into production silently Strong JavaScript developers don’t guess. They understand async control flow. 💡 I’ll pin the full breakdown + correct pattern after a few answers. 🔖 Hashtags (viral-tested) #JavaScript #AsyncJavaScript #JSFundamentals #WebDevelopment #FrontendDeveloper #FullStackDeveloper #CodingInterview #DevCommunity #ProductionBugs #VibeCode
To view or add a comment, sign in
-
-
This async / await output confuses even experienced developers 😲 🧩 JavaScript Output-Based Question (Async / Await) ✅ Correct Output 3 1 4 2 🧠 Why this output comes? (Step-by-Step) 1️⃣ Synchronous code runs first • console.log(3) → prints 3 2️⃣ test() is called • console.log(1) runs immediately → prints 1 3️⃣ await Promise.resolve() • Even though the promise is resolved, await pauses the function execution • Remaining code moves to the microtask queue 4️⃣ Back to synchronous code • console.log(4) → prints 4 5️⃣ Microtasks execute • console.log(2) runs last → prints 2 🔑 Key Takeaways (Interview Insight) ✔️ await is always asynchronous ✔️ Code after await runs in the microtask queue ✔️ Even resolved promises don’t run immediately ✔️ Understanding the event loop is critical for async JavaScript async / await looks synchronous, but behaves asynchronously. #JavaScript #AsyncAwait #InterviewQuestions #FrontendDeveloper #MERNStack #ReactJS
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