<?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: Sirajul Islam</title>
    <description>The latest articles on DEV Community by Sirajul Islam (@sirazulislam).</description>
    <link>https://dev.to/sirazulislam</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F98963%2F2e0e0ee7-1ebc-4df5-912c-88136cd550a2.JPG</url>
      <title>DEV Community: Sirajul Islam</title>
      <link>https://dev.to/sirazulislam</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sirazulislam"/>
    <language>en</language>
    <item>
      <title>JavaScript Hoisting</title>
      <dc:creator>Sirajul Islam</dc:creator>
      <pubDate>Wed, 19 Feb 2025 05:01:13 +0000</pubDate>
      <link>https://dev.to/sirazulislam/javascript-hoisting-4fko</link>
      <guid>https://dev.to/sirazulislam/javascript-hoisting-4fko</guid>
      <description>&lt;p&gt;Hoisting কি?&lt;br&gt;
JavaScript-এ hoisting হলো একটি মেকানিজম যেখানে variable এবং function declarations গুলো automatically স্কোপের শীর্ষে (top of scope) উঠে যায় execution করার আগে। অর্থাৎ, আপনি যদি কোনো ভেরিয়েবল বা ফাংশন ডিক্লেয়ারেশন কোডের পরে ব্যবহার করেন, তবুও JavaScript এটি কাজ করবে।&lt;/p&gt;

&lt;p&gt;Hoisting কিভাবে কাজ করে?&lt;br&gt;
Variable hoisting: শুধুমাত্র declaration উপরে উঠে যায়, value (initialization) উপরে ওঠে না।&lt;br&gt;
Function hoisting: Function declarations সম্পূর্ণরূপে উপরে ওঠে, যার ফলে আপনি ডিক্লেয়ারের আগেও ফাংশন কল করতে পারেন।&lt;/p&gt;

&lt;p&gt;Variable Hoisting:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipmej8apqylk7u3gy2dc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fipmej8apqylk7u3gy2dc.png" alt="variable hoisting" width="800" height="115"&gt;&lt;/a&gt;&lt;br&gt;
কেন undefined আসলো?&lt;br&gt;
👉 কারণ JavaScript কোড চালানোর আগে নিচের মতো করে পরিবর্তন করে নেয়:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx63xfks88ucavisz6mkt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx63xfks88ucavisz6mkt.png" alt="variable hoisting 2" width="800" height="133"&gt;&lt;/a&gt;&lt;br&gt;
👉 let এবং const hoisting করে, কিন্তু তারা টেম্পোরাল ডেড জোন (TDZ) তৈরি করে, যার ফলে ব্যবহার করার আগে ReferenceError দেখায়।&lt;/p&gt;

&lt;p&gt;Function Hoisting:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw2wj8mgsjzgkkyty6owe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw2wj8mgsjzgkkyty6owe.png" alt="function hoisting" width="800" height="164"&gt;&lt;/a&gt;&lt;br&gt;
👉 এখানে পুরো function declaration উপরে ওঠে, তাই এটি ডিক্লেয়ারের আগেও কল করা যায়।&lt;/p&gt;

&lt;p&gt;Function Expression এ Hoisting হয় না:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bxqeqn9w3wgv49zoq2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bxqeqn9w3wgv49zoq2u.png" alt="function hoisting" width="800" height="162"&gt;&lt;/a&gt;&lt;br&gt;
👉 এখানে শুধুমাত্র var greet; উপরে উঠবে, কিন্তু function definition না, তাই এটি TypeError দেখাবে।&lt;/p&gt;

&lt;p&gt;সংক্ষেপে&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;var hoisting হয়, কিন্তু undefined হয়।&lt;/li&gt;
&lt;li&gt;let &amp;amp; const hoisting হয়, কিন্তু TDZ এর কারণে ReferenceError দেয়।&lt;/li&gt;
&lt;li&gt;Function declarations পুরোপুরি hoisting হয়।&lt;/li&gt;
&lt;li&gt;Function expressions hoisting হয় না।&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>javascript</category>
      <category>hoisting</category>
    </item>
  </channel>
</rss>
