tapi sebelumnya mari kita ke konsep...
Cara kerja Javascript Engine?
Sebuah program untuk membaca kode kita dan mengerti apa yang diperintahkan dan membedakan grammar tersebut valid atau tidak
Kode yang kita tulis bukanlah magic tapi ada pihak yang menulis program untuk menerjemahkannya ke komputer
extra stuff
function myFunction() {
var myVar= 2
}function
variable
Dimana kode secara fisik berada / ditulis
Maksud `Lexical environment` pada bahasa pemograman adalah bagian mana kode itu berada yang terpenting.
Sebuah wadah (wrapper) yang membantu mengatur / mengelola kode yang sedang berjalan
Ada banyak lexical environments, yang sedang berjalan dan dikelola pada execution context.
Itu bisa berisi hal-hal di luar apa yang telah di tulis dalam kode itu sendiri.
Refresh materi yang lalu.
The simplest definition when talking about JavaScript
Name
Nested
Name
Name
Name / Value
Name / Value
Name / Value
Name / Value
Name / Value
Name / Value
Execution Context(Global)
Global Object
`this`
Execution Context(Global)
Global Object
`this`
(window)
Execution Context
Global Object
`this`
Outer Environment
Kode yang kita tulis
Tumpukan kode yang dijalankan dan berada di memori. ilustrasinya itu seperti kue lapis atau burger
Global Execution Context
a()
Execution Context
b()
Execution Context
function
()
{
}
b
function
a
()
{
}
b
()
a
()
function b () {
console.log(myVar)
}
function a () {
var myVar = 2
b()
}
var myVar = 1
a()
berapa nilai myVar yang di tampilkan di function b?
Text
Global Execution Context
a()
Execution Context
b()
Execution Context
myVar
1
myVar
2
myVar
?
reference ke outer environment
1
Scope Chain
function a, function b dan variable myVar dengan nilai 1 berada di global environment / context. Kemudian tercipta Global execution context di memori
baris paling terakhir, kita memanggil function a (invocation) maka execution context tercipta lagi dalam hal ini local execution context pada function a
didalam function a ada variable myVar yang diberi nilai 2 (ini disebut local variable) maka JavaScript menganggap myVar yang ada di function a adalah 2. dan menghiraukan global myVar. Kemudian memanggil function b
didalam function b, kita print myVar via console.log. namun, myVar tidak ada di function b, maka JavaScript mencari di outer / global environment dan mendapatkan nilai 1 dari myVar
function b () {
console.log(myVar)
}
function a () {
var myVar = 2
b()
}
// var myVar = 1
a()
berapa nilai myVar yang di tampilkan di function b?
apabila myVar di global environment tidak ada?
function b () {
console.log(myVar)
}
function a () {
var myVar = 2
b()
}
var myVar = 1
a()
berapa nilai myVar yang di tampilkan di function b?
apabila myVar di global environment tidak ada?
Document Object Model