Javascript Hoisting
- Categories:
- javascript
Function declaration dan variable declaration otomatis berpindah (“hoisted”) secara tak kasat mata ke posisi paling atas di dalam scope yang melakukan deklarasi oleh intepreter Javascript.
Variabel
Secara default jika variabel belum dideklarasikan, akan ada ReferenceError
.
Saat variabel telah di-deklarasikan.
Kode diatas diintepretasikan oleh Javascript menjadi seperti dibawah ini.
Berbeda dengan deklarasi variabel dengan var
, let
dan const
memiliki konsep Temporal Dead Zone (TDZ).
Dengan menggunakan let
, deklarasi ulang akan menyebabkan TypeError
.
Sedangkan melakukan referensi terhadap variabel didalam suatu blok sebelum variabel di-deklarasi akan menyebabkan ReferenceError
. Hal ini dikarenakan variabel berada dalam “temporal dead zone” hingga deklarasi variabel diproses.
Function
Perlu diketahui, Javascript ada istilah function expression dan function declaration.
Anonymous function expression melakukan “hoist” terhadap nama variabel saja, tidak dengan isinya.
Named function expression melakukan “hoist” terhadap nama variabel saja, tidak dengan nama function ataupun body dari function.
Function declaration melakukan “hoist” baik nama ataupun body dari function.
Lebih lanjut mengenai hosting dapat dilihat tulisan Javascript Scoping & Hoisting.
Referensi
- Tags:
- #javascript
Recent Posts
Subdomain Hijacking
My dormant subdomain was recently hijacked, redirecting it to a online gamble registration page.
C# DbContext ServiceLifeTime
my note about C Sharp ServiceLifeTime
PostgreSQL Index Usage Monitoring
Having too many unused or underused indexes on a table can slow down write and update operations in your PostgreSQL database, making it crucial to regularly identify and manage them for optimal performance.
KAK Labs Newsletter #6 - Staying Safe From Pegasus Spyware
Newsletter #6 - Pegasus, Ruby, PostgreSQL and networkQuality tool
Material Design - Paragraph Spacing
According to Google's Material Design, keep paragraph spacing in the range between .75x and 1.25x of the type size.