Konteks Eksekusi Dalam JavaScript
Mari kita mulai dengan satu contoh dan kemudian kita uraikan bagaimana kode itu bekerja di belakang layar.
var x = 10;
var y = 20;
function add(a,b){
return a+b;
}
var result = add(x,y);
console.log(result) //30
Pertama, nyatakan variabel x & y dan inisialisasi dengan masing-masing vlaue 10 & 20.
Kedua, deklarasikan fungsi add yang menerima argumen dan mengembalikan jumlah argumen yaitu 10 + 20 = 30.
Ketiga, panggil fungsi tambah dengan argumen sebagai nilai variabel x & y dan simpan hasilnya di hasil variabel.
Akhirnya, keluaran dari hasil variabel dengan konsol.
Saat menjalankan kode di atas, JavaScript melakukan banyak hal.
Saat mesin JavaScript mengeksekusi kode JavaScript pada saat itu, ia membuat konteks eksekusi.
Setiap konteks eksekusi memiliki dua fase
- Fase penciptaan.
- Fase eksekusi.
Saat mesin JavaScript mengeksekusi kode untuk pertama kalinya, Ini menciptakan konteks eksekusi global. Selama fase ini JavaScript melakukan beberapa tugas.
- Buat objek global yaitu jendela di browser web atau global di Node.js .
- Buat objek this (kata kunci this) dan ikat ke objek global, Dalam kasus browser web, kata kunci ini dilampirkan dengan objek window dan di Node js kata kunci ini dilampirkan dengan objek global.
- Siapkan tumpukan memori untuk menyimpan referensi variabel dan fungsi.
- Simpan deklarasi fungsi di tumpukan memori dan variabel dalam konteks eksekusi global dengan nilai awal sebagai tidak terdefinisi.
- Simpan variabel x, y & hasil dan deklarasi fungsi add() dalam konteks eksekusi global.
- Inisialisasi variabel dengan nilai undefined yaitu x = undefined , y = undefined dan result = undefined.
Fase eksekusi
Selama fase eksekusi, mesin JavaScript mengeksekusi kode baris demi baris, memberikan nilai ke variabel dan mengeksekusi pemanggilan fungsi.
Untuk setiap panggilan fungsi, mesin JavaScript membuat panggilan eksekusi fungsional baru.
Konteks eksekusi fungsi mirip dengan konteks eksekusi global. Namun alih-alih membuat objek global, mesin JavaScript membuat objek argumen yang merujuk ke semua parameter fungsi.
Dalam contoh kami, mesin JavaScript membuat objek argumen yang mereferensikan semua parameter yang diteruskan ke fungsi dan menetapkan nilai ini ke objek global jika browser web nilai ini dilampirkan dengan objek jendela dan di Node js nilai ini dilampirkan dengan global objek dan juga menginisialisasi parameter a & b dengan nilai yang tidak ditentukan.
Selama fase eksekusi konteks eksekusi fungsi, mesin JavaScript menetapkan nilai 10 & 20 ke parameter a & b dan mengembalikan hasilnya (30) ke konteks eksekusi global.
Untuk melacak semua konteks eksekusi, termasuk konteks eksekusi global dan konteks eksekusi fungsi, mesin JavaScript menggunakan tumpukan panggilan.
Mari tetap berhubungan
Saya harap artikel ini bermanfaat bagi Anda, sampai jumpa di artikel berikutnya!

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































