💡 Hoisting in JavaScript looks simple… until you see what’s happening under the hood At first glance, hoisting feels easy — “variables are moved to the top” — but the reality is much deeper. In reality, JavaScript creates all variables in the current scope before it even starts executing the code. Here’s where things get interesting 👇 🔹 Variables declared using var → Created and initialized with undefined 🔹 Variables declared using let and const → Created but marked as → Accessing them before initialization throws a ReferenceError As described in the ECMAScript spec: 👉 For let and const: Variables are created when their containing Environment Record is instantiated, but cannot be accessed until their LexicalBinding is evaluated. 👉 For var: Variables are created when their Environment Record is instantiated and are initialized to undefined immediately. 💭 The takeaway? Hoisting isn’t just about moving declarations — it’s about how JavaScript prepares memory before execution even begins. And that’s why something that looks so simple on the surface actually has a lot going on behind the scenes. 🙏 Credit: GreatFrontEnd for the clear explanation and breakdown. #JavaScript #Hoisting #WebDevelopment #Frontend #Programming #LearnInPublic
JavaScript Hoisting Explained: Variables and Memory Preparation
More Relevant Posts
-
"Why does JavaScript return "undefined" instead of throwing an error here?" 🤔 If you've ever faced this… you've already encountered Hoisting. Let’s understand it simply 👇 🔹 What is Hoisting? Hoisting means JavaScript moves declarations to the top of their scope before execution. But the behavior is different for "var", "let", and "const" 👇 🔹 var - Gets hoisted - Initialized with "undefined" Example: console.log(a); // 👉 undefined var a = 10; 🔹 let & const - Also hoisted - But NOT initialized This phase is called the Temporal Dead Zone (TDZ) Example: console.log(b); // ❌ ReferenceError let b = 10; 🔹 Function Hoisting Function declarations are fully hoisted ✅ Example: sayHello(); // ✅ works function sayHello() { console.log("Hello"); } 🚀 Pro Tip: Always declare variables before using them. It makes your code predictable and bug-free. 💬 Be honest — did hoisting confuse you at first? 😄 #javascript #webdevelopment #mern #coding #developers
To view or add a comment, sign in
-
Why I don't chain everything in JavaScript anymore Method chaining in JavaScript looks elegant at first glance. But over time, I realized it often comes with hidden costs. Long chains can: • Reduce readability • Hide unnecessary computations • Make debugging harder When everything happens in a single line, understanding what exactly went wrong becomes a challenge. Instead, I started breaking logic into small, named steps: // ❌ Harder to read & debug const result = users .filter(u => u.active) .map(u => u.profile) .filter(p => p.age > 18) .sort((a, b) => a.age - b.age); // ✅ Easier to read & maintain const activeUsers = users.filter(u => u.active); const profiles = activeUsers.map(u => u.profile); const adults = profiles.filter(p => p.age > 18); const result = adults.sort((a, b) => a.age - b.age); A simple rule I follow now: • 1–2 chain steps → 👍 totally fine • 3–4 steps → 🤔 think twice • 5+ steps → 🚩 break it down Cleaner code isn’t about writing less — it’s about making it easier to understand. What’s your take on method chaining? #javascript #webdevelopment #cleancode #frontend #programming
To view or add a comment, sign in
-
-
🚀 Mastering JavaScript Array Methods Understanding array methods is a game-changer when writing clean, efficient JavaScript code. Here’s a quick breakdown of some essential ones: 🔹 map() – Transforms each element in an array 🔹 forEach() – Executes a function for every element 🔹 filter() – Selects elements based on a condition 🔹 push() & pop() – Add/remove elements from the end 🔹 shift() & unshift() – Add/remove elements from the beginning 🔹 reduce() – Combines elements into a single value These methods help simplify data manipulation and make your code more readable and powerful. Whether you're transforming data, filtering results, or aggregating values, knowing when to use each method can level up your JavaScript skills. 💡 Pro tip: Use map() for transformations and reduce() for calculations or summaries. #JavaScript #WebDevelopment #Coding #Frontend #Programming #DeveloperTips
To view or add a comment, sign in
-
-
🚀 Mastering JavaScript Array Methods Understanding array methods is a game-changer when writing clean, efficient JavaScript code. Here’s a quick breakdown of some essential ones: 🔹 map() – Transforms each element in an array 🔹 forEach() – Executes a function for every element 🔹 filter() – Selects elements based on a condition 🔹 push() & pop() – Add/remove elements from the end 🔹 shift() & unshift() – Add/remove elements from the beginning 🔹 reduce() – Combines elements into a single value These methods help simplify data manipulation and make your code more readable and powerful. Whether you're transforming data, filtering results, or aggregating values, knowing when to use each method can level up your JavaScript skills. 💡 Pro tip: Use map() for transformations and reduce() for calculations or summaries. #JavaScript #WebDevelopment #Coding #Frontend #Programming #DeveloperTips
To view or add a comment, sign in
-
-
JavaScript Closures — made simple 💡 Closures sound complex… but they’re actually simple once you get the idea. A closure is when a function remembers variables from its outer scope even after the outer function has finished executing. Think of it like this: An inner function carries a “backpack” of variables and never forgets them. How it works: 1. Outer function creates a variable 2. Inner function uses that variable 3. Outer function returns the inner function 4. Inner function still has access to that variable Why closures are powerful: • Data privacy (encapsulation) • Maintain state between function calls • Used in callbacks, event handlers, React hooks • Foundation for advanced JavaScript concepts Real-world uses: • Counters • Private variables • One-time execution functions • Custom hooks & memoization One-line takeaway: A closure = function with a memory of its lexical scope If you understand closures, you’re moving from basics to real JavaScript thinking. What concept in JavaScript took you the longest to understand? #JavaScript #Closures #WebDevelopment #Frontend #CodingConcepts #LearnJavaScript #Programming #DeveloperLife
To view or add a comment, sign in
-
-
Day 3 — JavaScript is humbling me in the best way. Started with the basics I thought I already knew. Turns out I knew the syntax but not the why. var vs let vs const — I used to just pick randomly. Now I get why const is default and var is basically legacy. The thing that actually clicked today: arrow functions aren't just shorter syntax. They handle 'this' differently. That's why everyone prefers them in certain situations. Also spent an hour on map, filter, and reduce with real data instead of fake tutorials. Way more useful. Favourite thing I learned: optional chaining (?.) — it's saved me from so many "cannot read property of undefined" errors already. Drop a JavaScript concept below that confused you at first 👇 #javascript #webdevelopment #frontenddeveloper #coding
To view or add a comment, sign in
-
🚀 Mastering JavaScript Functions: The Ultimate Guide! 🚀 Functions in JavaScript are reusable blocks of code that perform specific tasks when called. They help organize code and make it more efficient by reducing repetition. For developers, understanding functions is essential for writing clean, modular code and improving code readability. Here's a step-by-step breakdown to create and call functions in JavaScript: 1️⃣ Declare the function using the `function` keyword. 2️⃣ Add parameters inside the parentheses to pass data to the function. 3️⃣ Write the code block within curly braces to define the function's logic. 4️⃣ Call the function by using its name followed by parentheses, passing arguments if needed. 🚨 Pro Tip: Always give meaningful names to functions for better code understanding and maintenance. 💡 Common Mistake Alert: Forgetting to return a value from a function when necessary can lead to unexpected results. 🤔 Question: What's your favorite use case for JavaScript functions? Share below! 🌐 View my full portfolio and more dev resources at tharindunipun.lk #JavaScript #Functions #CodingTips #WebDevelopment #Programming #CodeNewbie #DeveloperCommunity #LearnToCode #TechTalks
To view or add a comment, sign in
-
-
🚀 Dynamic Currying in JavaScript — Why it actually matters At first, currying feels like a trick: sum(1)(2)(3) But the real power isn’t syntax — it’s reusability. 💡 The idea 👉 Fix some arguments now 👉 Reuse the function later 🔧 Example const filter = fn => arr => arr.filter(fn); const filterEven = filter(x => x % 2 === 0); filterEven([1,2,3,4]); // [2,4] Instead of repeating logic everywhere, you create reusable building blocks. ⚡ Real-world uses API helpers → request(baseUrl)(endpoint) Logging → logger("ERROR")(msg) Event handlers → handleClick(id)(event) Validation → minLength(8)(value) 🧠 Key takeaway Currying isn’t about fancy functions. It’s about writing code that is: ✔ Reusable ✔ Composable ✔ Cleaner Libraries like Lodash and Ramda use this pattern heavily. Once this clicks, your approach to writing functions changes completely. #JavaScript #WebDevelopment #FunctionalProgramming #Currying #CleanCode #Frontend #Coding #100DaysOfCode #DeveloperJourney #TechCommunity
To view or add a comment, sign in
-
-
🚀 Understanding var, let, and const in JavaScript While learning JavaScript, one of the most important concepts I revisited is the difference between var, let, and const. It may look basic, but it plays a huge role in writing clean and bug-free code. 🔹 var - Function scoped - Can be re-declared and re-assigned - Can cause unexpected bugs due to scope leakage 🔹 let - Block scoped - Cannot be re-declared - Can be re-assigned 🔹 const - Block scoped - Cannot be re-declared or re-assigned - Must be initialized at the time of declaration 💡 One key takeaway: Use const by default, let when values need to change, and avoid var in modern JavaScript. Small concepts like these build a strong foundation for writing better and more predictable code. #JavaScript #WebDevelopment #Frontend #Coding #Learning #MERNStack #100DaysOfCode
To view or add a comment, sign in
-
-
🚀 Today I learned one of the most important JavaScript concepts — Promises. At first, asynchronous code felt confusing to me. How does JavaScript handle API calls, delays, and tasks without stopping the whole program? Then I understood the role of Promises 👇 👉 A Promise is an object that represents the future result of an asynchronous operation. It has 3 states: ⏳ Pending – operation still running ✅ Fulfilled – completed successfully ❌ Rejected – operation failed Simple Example: fetch("/users") .then((res) => res.json()) .then((data) => console.log(data)) .catch((err) => console.log(err)); 💡 Key Takeaways: ✔️ Better handling of asynchronous code ✔️ Cleaner than callback hell ✔️ Easier error handling with .catch() ✔️ Foundation of async/await The more I learn JavaScript fundamentals, the more I realize how powerful it is. 💻 What JavaScript topic confused you the most at first? 👇 #JavaScript #WebDevelopment #Promises #AsyncAwait #MERNStack #Coding #Learning #100DaysOfCode
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