<?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>Forem: Muhammad iqbal</title>
    <description>The latest articles on Forem by Muhammad iqbal (@muhammad_iqbal_9a8fe6a804).</description>
    <link>https://forem.com/muhammad_iqbal_9a8fe6a804</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%2F3749364%2F2e0d7762-a62c-4451-9e77-6beb2bb130c4.png</url>
      <title>Forem: Muhammad iqbal</title>
      <link>https://forem.com/muhammad_iqbal_9a8fe6a804</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/muhammad_iqbal_9a8fe6a804"/>
    <language>en</language>
    <item>
      <title>Execution Context</title>
      <dc:creator>Muhammad iqbal</dc:creator>
      <pubDate>Mon, 06 Apr 2026 00:30:59 +0000</pubDate>
      <link>https://forem.com/muhammad_iqbal_9a8fe6a804/execution-context-4ob3</link>
      <guid>https://forem.com/muhammad_iqbal_9a8fe6a804/execution-context-4ob3</guid>
      <description>&lt;p&gt;Bayangkan Execution Context sebuah dapur. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sebelum kamu memulai memasak(mengeksekusi code)&lt;/li&gt;
&lt;li&gt;kamu perlu ruang kerja, peralatan(variable)&lt;/li&gt;
&lt;li&gt;resep(functions)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;jadi disini Execution context adalah tahap persiapan atau "set up" tersebut.&lt;/p&gt;

&lt;h2&gt;
  
  
  First, Jenis "Kotak"
&lt;/h2&gt;

&lt;p&gt;perlu kamu ketahui JavaScript tidak menjalankan kode dalam satu tumpukan raksasa yang berantakan. Ia membuat konteks yang spesifik:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Global Execution Context (GEC):Ini adalah kotak default. Jika kode Kamu tidak berada di dalam fungsi, maka ia ada di sini. GEC membuat dua hal secara otomatis: objek window (di browser) dan kata kunci spesial this.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Functional Execution Context (FEC): Setiap kali Kamu memanggil fungsi, JavaScript membuat kotak mini baru khusus untuk fungsi tersebut. Di sinilah variabel dan logika spesifik tugas tersebut disimpan.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Second, The Two Phases (The "Magic" Trick)
&lt;/h2&gt;

&lt;p&gt;JavaScript tidak sekadar membaca kode baris-demi-baris dari atas ke bawah dan langsung mengeksekusinya. Ia melakukan dua kali lintasan di dalam "kotak" Kamu.secara instan. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fase A: Fase Penciptaan (Alokasi Memori)&lt;/strong&gt;&lt;br&gt;
Sebelum satu baris kode pun benar-benar "berjalan", mesin (engine) memindai kode kamu dan:&lt;/p&gt;

&lt;p&gt;Membuat Objek Global (window).&lt;/p&gt;

&lt;p&gt;Menyiapkan Ruang Memori untuk variabel dan fungsi.&lt;/p&gt;

&lt;p&gt;Hoisting: Ia mengatur deklarasi variabel menjadi undefined dan menyimpan seluruh deklarasi fungsi ke dalam memori.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fase B: Fase Eksekusi&lt;/strong&gt;&lt;br&gt;
Baru di tahap ini mesin menyisir kode baris-demi-baris. Ia memberikan nilai aktual ke variabel Kamu (misalnya, mengubah undefined menjadi "Halo Dunia") dan menjalankan fungsi-fungsinya.&lt;/p&gt;

&lt;h2&gt;
  
  
  Third, Call Stack: Cara JS Menjaga Keteraturan
&lt;/h2&gt;

&lt;p&gt;Karena JavaScript bersifat single-threaded (hanya bisa melakukan satu hal dalam satu waktu), ia menggunakan Call Stack untuk melacak "kotak" mana yang sedang dikerjakan.&lt;/p&gt;

&lt;p&gt;Bayangkan setumpuk keripik Pringles:&lt;/p&gt;

&lt;p&gt;Global Context adalah keripik paling bawah.&lt;/p&gt;

&lt;p&gt;Saat Anda memanggil fungsi A(), keripik baru (Context A) diletakkan di atasnya.&lt;/p&gt;

&lt;p&gt;Jika fungsi A memanggil fungsi B, Context B diletakkan di atas A.&lt;/p&gt;

&lt;p&gt;Setelah fungsi B selesai, ia "dibuang" (popped) dari tumpukan. Kita kembali ke A.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>architecture</category>
      <category>frontend</category>
      <category>webdev</category>
    </item>
    <item>
      <title>JS Object: Reference vs Copying</title>
      <dc:creator>Muhammad iqbal</dc:creator>
      <pubDate>Sun, 29 Mar 2026 01:47:50 +0000</pubDate>
      <link>https://forem.com/muhammad_iqbal_9a8fe6a804/js-object-reference-vs-copying-1ee</link>
      <guid>https://forem.com/muhammad_iqbal_9a8fe6a804/js-object-reference-vs-copying-1ee</guid>
      <description>&lt;h2&gt;
  
  
  Hukum Dasar (The Core Rule)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Primitive (String, Number, Boolean): Disalin nilainya (Value).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Object (Object, Array, Function): Disalin alamat memorinya (Reference).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Akibatnya: Jika A = B, maka mengubah isi B akan merusak isi A.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Perbandingan (Equality Check)
&lt;/h2&gt;

&lt;p&gt;Jangan tertipu oleh isi yang sama.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;{} === {} adalah FALSE.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;JavaScript membandingkan lokasi memori, bukan bentuk objeknya.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Dua objek hanya sama (===) jika mereka merujuk ke "rumah" yang sama di memori.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Jebakan "Const" &amp;amp; Fungsi
&lt;/h2&gt;

&lt;p&gt;Mutable Const: const tidak membuat objek menjadi read-only. Kita tetap bisa mengubah isi propertinya, hanya tidak bisa mengganti variabelnya dengan objek baru.&lt;/p&gt;

&lt;p&gt;Side Effects: Saat mengirim objek ke fungsi:&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;function&lt;/span&gt; &lt;span class="nf"&gt;mutate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// BAHAYA: Mengubah objek asli di luar fungsi.&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>frontend</category>
      <category>backend</category>
    </item>
  </channel>
</rss>
