Ever get an interview question that seems simple but hides a tricky JavaScript concept? "What's the output of `setTimeout(() => console.log(1), 0); console.log(2);`?" is a classic. The answer isn't "1, then 2." It’s a great test of your understanding of the event loop. 🧠 The `setTimeout` callback, even with a zero-millisecond delay, gets pushed to the Web API and then the callback queue. The JavaScript engine runs all synchronous code on the call stack 𝐟𝐢𝐫𝐬𝐭. So, `console.log(2)` executes immediately. Only after the stack is clear does the event loop pick up the `console.log(1)` from the queue. ⚡ It's a small detail that reveals a huge amount about how asynchronous JS actually works. Have you struggled with this before? #WebDevelopment #DeveloperTips #CodingLife
JavaScript interview question: setTimeout output
More Relevant Posts
-
Have you ever wondered why a setTimeout call even with zero delay executes after a Promise.resolve().then()? Many developers assume JavaScript runs strictly line-by-line, but the reality involves a hidden orchestrator that manages asynchronous priorities: the Event Loop. Understanding the Event Loop isn't just theory; it's fundamental to writing fast, reliable, and performant web applications that avoid blocking the main thread. In my new article on Medium, I break down a simple code snippet to precisely explain the mechanics of the Microtask and Macrotask Queues and reveal why Promises get absolute priority. Click the link below to dive in and uncover the secret behind this non-intuitive execution order: [ https://lnkd.in/dEFGEXSC] #Javascript_EventLoop #Microtasks #Macrotasks
To view or add a comment, sign in
-
“The Secret Behind JavaScript’s Magic — The Event Loop 🧠” When I first learned JavaScript, I used to wonder — how can it handle so many things at once even though it’s single-threaded? 🤔 The answer lies in one beautiful mechanism — The Event Loop. Here’s what actually happens behind the scenes 👇 1️⃣ JavaScript runs in a single thread — only one thing executes at a time. 2️⃣ But when something async happens (like setTimeout, fetch, or Promise), those tasks are offloaded to the browser APIs or Node.js APIs. 3️⃣ Once the main call stack is empty, the event loop takes pending callbacks from the task queue (or microtask queue) and pushes them back into the stack to execute. So while it looks like JavaScript is multitasking, it’s actually just scheduling smartly — never blocking the main thread. Example:- console.log("Start"); setTimeout(() => console.log("Inside Timeout"), 0); Promise.resolve().then(() => console.log("Inside Promise")); console.log("End"); Output:- Start End Inside Promise Inside Timeout Even though setTimeout was “0 ms”, Promises (microtasks) always run before timeouts (macrotasks). That’s the secret sauce 🧠💫 Understanding this single concept can help you debug async behavior like a pro. #JavaScript #EventLoop #Async #WebDevelopment #Coding
To view or add a comment, sign in
-
🔍 JavaScript Insight: Object Equality by Reference Ever wondered why two objects with identical properties still return false when compared with ===? This quick snippet is a reminder that in JavaScript, objects are compared by reference—not by value. ✅ obj1 === obj3 → true (same memory reference) ❌ obj1 === obj2 → false (different objects, even if identical) Understanding this is key when debugging, designing data flows, or working with state management in React or backend logic. #JavaScript #WebDevelopment #FullStack #CodeTips #DeveloperNotes #ReactJS #InterviewPrep
To view or add a comment, sign in
-
-
🚀 JavaScript Hoisting Explained (Simply!) Hoisting means JavaScript moves all variable and function declarations to the top of their scope before code execution. If that definition sounds confusing, see this example 👇 console.log(a); var a = 5; Internally, JavaScript actually does this 👇 var a; // declaration is hoisted (moved up) console.log(a); a = 5; // initialization stays in place ✅ Output: undefined --- 🧠 In Short: > Hoisting = JS reads your code twice: 1️⃣ First, to register variables & functions 2️⃣ Then, to execute the code line by line --- 💡 Tip: var → hoisted & initialized as undefined let / const → hoisted but not initialized (stay in Temporal Dead Zone) --- #JavaScript #Hoisting #WebDevelopment #CodingTips #JSInterview #Frontend #React #100DaysOfCode
To view or add a comment, sign in
-
💛 𝗗𝗮𝘆 𝟮 — 𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁: 𝗩𝗮𝗿𝗶𝗮𝗯𝗹𝗲𝘀, 𝗦𝗰𝗼𝗽𝗲, 𝗮𝗻𝗱 𝗛𝗼𝗶𝘀𝘁𝗶𝗻𝗴 Today, I revisited one of the most confusing yet powerful concepts in JavaScript — 𝗵𝗼𝗶𝘀𝘁𝗶𝗻𝗴 and 𝘀𝗰𝗼𝗽𝗶𝗻𝗴. 🧠 💡 𝗖𝗼𝗻𝗰𝗲𝗽𝘁: JavaScript moves all declarations to the top of their scope during compilation — this is known as hoisting. However, the behavior differs based on whether you use var, let, const, or functions. 💻 𝗖𝗼𝗱𝗲 𝗦𝗻𝗶𝗽𝗽𝗲𝘁: console.log(a); // undefined (hoisted) var a = 10; console.log(b); // ❌ ReferenceError (in TDZ) let b = 20; sayHello(); // ✅ Works — function declarations are hoisted function sayHello() { console.log("Hello from a hoisted function!"); } // ❌ Error: sayHi is not a function sayHi(); var sayHi = function () { console.log("Hi from function expression!"); }; 🧩 𝗘𝘅𝗽𝗹𝗮𝗻𝗮𝘁𝗶𝗼𝗻: 0. var is hoisted and initialized with undefined. 1. let and const are hoisted but stay uninitialized in the temporal dead zone (TDZ). 2. Function declarations are fully hoisted, so you can call them before defining. 3. Function expressions (especially when assigned to var) behave like variables — hoisted but not initialized. 📈 𝗦𝗰𝗼𝗽𝗲 𝗪𝗶𝘀𝗱𝗼𝗺: var → function scope let & const → block scope Functions → create their own local scope 🔥 𝗧𝗮𝗸𝗲𝗮𝘄𝗮𝘆: Understanding how JavaScript creates and executes contexts will help you debug faster and think more like the JS engine itself. #JavaScript #100DaysOfCode #Hoisting #Scope #Functions #FrontendDevelopment #LearningEveryday
To view or add a comment, sign in
-
Day 35 — Deep Dive into JavaScript Performance Today’s session was surprisingly eye-opening. I explored how a simple mistake — using top-level await — can silently block the entire module, freeze execution, and degrade performance without any obvious warning. Key insights from today: • Why top-level await halts the entire script until completion • How this affects performance across your whole module • Why async functions handle asynchronous tasks far more efficiently • The right way to work with fetch, async patterns, and non-blocking code • Understanding how JavaScript modules load and execute behind the scenes This was a reminder that small details in JavaScript deeply influence performance and user experience. Mastery begins with understanding what’s happening beneath the surface. #JavaScript #WebDevelopment #AsyncAwait #FrontendEngineering #LearningJourney #CodeSmarter Rohit Negi
To view or add a comment, sign in
-
-
Even an empty JS file triggers the creation of a Global Execution Context (GEC) — and with it, the global object and the this keyword. 🔍 In browsers, this === window 🖥️ In Node.js, this === {} (module scope) But here’s the twist: the global object isn’t created by the JS engine (like V8) — it’s provided by the environment (browser or Node.js). 💡 Want a consistent way to access the global object across platforms? Say hello to globalThis — introduced in ES2020 to unify window and global. 📊 I’ve broken this down into a slide deck with examples, call stack behavior, and input-output questions to help you master the concept. 👇 Check out the slides and let me know what surprised you most! #JavaScript #Frontend #NodeJS #InterviewPrep #globalThis #ExecutionContext #LinkedInLearning #TechSlides #GundlapudiExplains
To view or add a comment, sign in
-
🧩 Undefined vs Null 🤔 ✨ When there’s no existence, it’s Undefined, whereas emptiness exists by choice, it’s Null. 🔹 undefined → When a variable is declared but not assigned by the user, JavaScript itself assigns the value undefined by default. let a; console.log(a); // undefined 🧠 It means: “No value exists yet — JavaScript couldn’t find one.” 🔹 null → When a variable is explicitly assigned by the user to represent emptiness, it holds the value null. let b = null; console.log(b); // null 💡 It means: “The developer intentionally set this to nothing.” ⚙️ Type check curiosity typeof null; // "object" ❗ (a known JavaScript bug) typeof undefined; // "undefined" 🚫 Falsy values Both are falsy during condition checks 👇 if (!undefined && !null) console.log('Falsy values!'); 🎯 In short: 🟠 undefined → Not assigned by the user → JavaScript assigns it automatically. 🟣 null → Explicitly assigned by the user → JavaScript doesn’t assign it. 🔖 Hashtags #JavaScript #WebDevelopment #Frontend #CodingTips #LearnToCode #JSBasics #WebDevCommunity #JavaScriptTips #CodeNewbie #DeveloperInsights
To view or add a comment, sign in
-
🚀 Understanding Hoisting in JavaScript Ever wondered how you can use a variable or function before it’s declared? 🤔 That’s because of Hoisting! In JavaScript, hoisting means that variable and function declarations are moved to the top of their scope during the compile phase — before the code actually runs. 🧠 Example: greet(); // ✅ Works! function greet() { console.log("Hello, World!"); } Here, the function greet() is hoisted to the top — that’s why you can call it even before it’s defined. But be careful with variables 👇 console.log(x); // ❌ undefined var x = 10; Variables declared with var are hoisted but not initialized, so they exist but hold undefined. However, variables declared with let and const are also hoisted but stay in the Temporal Dead Zone (TDZ) until they’re actually declared. 📌 In short: Functions → hoisted with their definitions ✅ var → hoisted but undefined ⚠️ let & const → hoisted but inaccessible until declared 🚫 #javascript #frontend #webdevelopment
To view or add a comment, sign in
-
-
🚀 5 Quick Facts About Arrays in JavaScript 1️⃣ Dynamic & Flexible – You can store numbers, strings, or even objects in the same array. 🧩 const arr = [1, "two", true]; 2️⃣ Technically Objects – typeof [] returns "object", not "array". ✅ Use Array.isArray(arr) to be sure. 3️⃣ Built for Efficiency – Use map(), filter(), and reduce() to write clean, functional code. 4️⃣ Spread Operator Power – Combine or clone arrays effortlessly. ⚙️ const merged = [...arr1, ...arr2]; 5️⃣ Zero-Indexed – The first element starts at index 0. 📍 arr[0] gives the first item. Arrays are more powerful than they look — master them, and your JS code will be cleaner, faster, and smarter 💡 #JavaScript #WebDevelopment #CodingTips #Arrays #DeveloperLife
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