<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Faiz Mansuri</title>
    <description>The latest articles on DEV Community by Faiz Mansuri (@faeizmn).</description>
    <link>https://dev.to/faeizmn</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2668019%2F256a5238-29e3-41f1-9288-20d6b7eddd79.jpg</url>
      <title>DEV Community: Faiz Mansuri</title>
      <link>https://dev.to/faeizmn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/faeizmn"/>
    <language>en</language>
    <item>
      <title>Debunking “Hoisting” – It’s Not Lifting, It’s Contextual Initialization</title>
      <dc:creator>Faiz Mansuri</dc:creator>
      <pubDate>Fri, 11 Jul 2025 13:35:39 +0000</pubDate>
      <link>https://dev.to/faeizmn/debunking-hoisting-its-not-lifting-its-contextual-initialization-3c2d</link>
      <guid>https://dev.to/faeizmn/debunking-hoisting-its-not-lifting-its-contextual-initialization-3c2d</guid>
      <description>&lt;p&gt;Ever logged &lt;code&gt;console.log(myVar)&lt;/code&gt; only to see &lt;code&gt;undefined&lt;/code&gt;… then tried the same with &lt;code&gt;let&lt;/code&gt; and got a ReferenceError? You’re not alone. Let’s deep-dive into JavaScript’s &lt;strong&gt;Global Execution Context (GEC)&lt;/strong&gt; and &lt;strong&gt;Function Execution Context (FEC)&lt;/strong&gt; to demystify what’s really happening.&lt;/p&gt;




&lt;h2&gt;
  
  
  “Hoisting” isn’t a cosmic elevator pulling your variables up. It’s JavaScript establishing &lt;em&gt;contexts&lt;/em&gt; before execution—and initializing some names differently.
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Global Execution Context (GEC)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What it is:&lt;/strong&gt; The environment created when your script first runs (e.g., &lt;code&gt;window&lt;/code&gt; in browsers, &lt;code&gt;global&lt;/code&gt; in Node.js).&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Variable instantiation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;var&lt;/code&gt; names get declared and initialized to &lt;code&gt;undefined&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;let&lt;/code&gt;/&lt;code&gt;const&lt;/code&gt; names are &lt;em&gt;registered&lt;/em&gt; but not initialized—enter the &lt;strong&gt;Temporal Dead Zone (TDZ)&lt;/strong&gt; until their definition line.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// In GEC:&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myVar&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// → undefined  &lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;myLet&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// → ReferenceError (TDZ)  &lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt;   &lt;span class="nx"&gt;myVar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;A&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;    
&lt;span class="kd"&gt;let&lt;/span&gt;   &lt;span class="nx"&gt;myLet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;B&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;    
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Function Execution Context (FEC)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;What it is:&lt;/strong&gt; A fresh context created each time a function is called, with its own scope chain and &lt;code&gt;this&lt;/code&gt; binding.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Hoisting behavior inside FEC:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Function declarations are fully hoisted—you can call them before they appear.&lt;/li&gt;
&lt;li&gt;Inside that FEC, &lt;code&gt;var&lt;/code&gt; again initializes to &lt;code&gt;undefined&lt;/code&gt;; &lt;code&gt;let&lt;/code&gt;/&lt;code&gt;const&lt;/code&gt; stay in TDZ until their line.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// FEC for chase():&lt;/span&gt;
&lt;span class="nf"&gt;chase&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="c1"&gt;// Works, because function chase is hoisted&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;chase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;In chase, myVar is:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;myVar&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;        &lt;span class="c1"&gt;// undefined&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;In chase, myLet is:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;myLet&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;        &lt;span class="c1"&gt;// ReferenceError (TDZ)&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt;   &lt;span class="nx"&gt;myVar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;inside chase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt;   &lt;span class="nx"&gt;myLet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;also inside chase&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nf"&gt;caught&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="c1"&gt;// Also works—caught() is hoisted too&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;caught&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Caught!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Temporal Dead Zone (TDZ) Quick Demo
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;blockVar&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// ReferenceError – still TDZ!&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;blockVar&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello, TDZ!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;⏳ Until the &lt;code&gt;let&lt;/code&gt; line runs, &lt;code&gt;blockVar&lt;/code&gt; exists but is inaccessible.&lt;/p&gt;




</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>programming</category>
    </item>
    <item>
      <title>JavaScript: Execution Context &amp; this Made Easy</title>
      <dc:creator>Faiz Mansuri</dc:creator>
      <pubDate>Wed, 09 Jul 2025 22:04:00 +0000</pubDate>
      <link>https://dev.to/faeizmn/javascript-execution-context-this-made-easy-22ck</link>
      <guid>https://dev.to/faeizmn/javascript-execution-context-this-made-easy-22ck</guid>
      <description>&lt;p&gt;JavaScript can feel like magic. But magic is just tricks you don’t see. Let’s pull back the curtain on two big ideas: &lt;strong&gt;Execution Context&lt;/strong&gt; and &lt;strong&gt;&lt;code&gt;this&lt;/code&gt;&lt;/strong&gt;. By the end, you’ll see why they matter and why you should care.&lt;/p&gt;




&lt;h3&gt;
  
  
  What Is an Execution Context?
&lt;/h3&gt;

&lt;p&gt;Think of every bit of code as a &lt;strong&gt;kitchen&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Global Kitchen&lt;/strong&gt; is the main studio.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Function Kitchen&lt;/strong&gt; is a new room a chef builds each time they cook.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Eval Kitchen&lt;/strong&gt; is a secret room you rarely visit.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each kitchen has its own tools (functions) and ingredients (variables). When you run code, JS picks a kitchen and works there.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Three Steps
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Creation&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JS sets all &lt;code&gt;var&lt;/code&gt; to &lt;code&gt;undefined&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;let&lt;/code&gt;/&lt;code&gt;const&lt;/code&gt; are known but not ready.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Execution&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JS runs your lines one by one.
&lt;/li&gt;
&lt;li&gt;Values fill the blanks.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Exit&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kitchen closes.
&lt;/li&gt;
&lt;li&gt;Its tools and ingredients go away.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;I firmly believe that knowing these steps stops 80% of your bugs.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Understanding &lt;code&gt;this&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;In JS, &lt;code&gt;this&lt;/code&gt; is the chef’s badge &lt;strong&gt;it tells you who’s cooking right now&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Where you are&lt;/th&gt;
&lt;th&gt;
&lt;code&gt;this&lt;/code&gt; is…&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;In the global scope&lt;/td&gt;
&lt;td&gt;The global object&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inside a plain function&lt;/td&gt;
&lt;td&gt;Depends on how it’s called&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inside an object’s method&lt;/td&gt;
&lt;td&gt;That object&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inside an arrow function&lt;/td&gt;
&lt;td&gt;Same &lt;code&gt;this&lt;/code&gt; as outer scope&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// window in browser&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mimi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// "mimi"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Lexical Environment: A Simple Tree
&lt;/h3&gt;

&lt;p&gt;“Lexical” means “where it’s written.” Imagine your code as a tree:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Global&lt;/span&gt;
 &lt;span class="err"&gt;└&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="err"&gt;└&lt;/span&gt; &lt;span class="nf"&gt;outer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
       &lt;span class="err"&gt;└&lt;/span&gt; &lt;span class="nf"&gt;inner&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each node holds its own vars and sees its parent’s vars, but not its child’s. That rule is non-negotiable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;earth&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;home&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;outer&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;door&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;inner&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;w&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mind&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;w&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// earth home door mind&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nf"&gt;inner&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;w&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Error: w is not here&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nf"&gt;outer&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why This Matters
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Fewer Surprises. You know where your vars live.&lt;/li&gt;
&lt;li&gt;Clear Bugs. You see why you got &lt;code&gt;undefined&lt;/code&gt; or the wrong &lt;code&gt;this&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Better Code. You write functions that do just what you expect.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>frontend</category>
      <category>programming</category>
    </item>
    <item>
      <title>How Web Pages Load?</title>
      <dc:creator>Faiz Mansuri</dc:creator>
      <pubDate>Fri, 27 Jun 2025 06:54:32 +0000</pubDate>
      <link>https://dev.to/faeizmn/how-web-pages-load-3fb7</link>
      <guid>https://dev.to/faeizmn/how-web-pages-load-3fb7</guid>
      <description>&lt;p&gt;I’ve been revisiting some fundamentals around script loading and wanted to share a simple visual that clarifies how script placement and attributes impact page performance:&lt;/p&gt;

&lt;p&gt;🟢 HTML Parsing&lt;br&gt;
🔵 Script Download&lt;br&gt;
🔴 Script Execution&lt;/p&gt;

&lt;p&gt;─────────────────────────────────────────────────────────────&lt;/p&gt;

&lt;p&gt;1️⃣ &amp;lt;​script&amp;gt; in &lt;/p&gt;
&lt;br&gt;
HTML:  🟢🟢   🔴  🟢🟢🟢&lt;br&gt;
Script:     🔵🔴&lt;br&gt;
Parsing stops while the script downloads and runs. &lt;br&gt;
This can delay rendering and hurt perceived performance.

&lt;p&gt;─────────────────────────────────────────────────────────────&lt;/p&gt;

&lt;p&gt;2️⃣ &amp;lt;​script&amp;gt; at end of &lt;/p&gt;
&lt;br&gt;
HTML:  🟢🟢🟢🟢🟢🟢&lt;br&gt;
Script:   ------------🔵🔴&lt;br&gt;
HTML finishes parsing before the script loads and executes.&lt;br&gt;
A safer default for avoiding render-blocking.

&lt;p&gt;─────────────────────────────────────────────────────────────&lt;/p&gt;

&lt;p&gt;3️⃣ &amp;lt;​script async&amp;gt;&lt;br&gt;
HTML:  🟢🟢🟢🟢🟢🟢&lt;br&gt;
Script:    🔵---🔴&lt;br&gt;
Downloads in parallel and executes as soon as it’s ready.&lt;br&gt;
Can interrupt parsing unpredictably.&lt;/p&gt;

&lt;p&gt;─────────────────────────────────────────────────────────────&lt;/p&gt;

&lt;p&gt;4️⃣ &amp;lt;​script defer&amp;gt;&lt;br&gt;
HTML:  🟢🟢🟢🟢🟢🟢&lt;br&gt;
Script:     🔵---------------🔴&lt;br&gt;
Downloads in parallel and executes after parsing is complete.&lt;br&gt;
Predictable and non-blocking.&lt;/p&gt;

&lt;p&gt;Even small adjustments here can improve metrics like First Contentful Paint and make your site feel faster.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
