Variabel Zona Mati Temporal
Dalam Artikel ini, saya akan membahas tentang istilah keren ini (pun intended) yang sering digunakan dalam Javascript Gosip dan Wawancara. Untuk memahami TDZ , seseorang harus memiliki pemahaman umum tentang konsep Javascript Hoisting. Sekali lagi, Apa artinya Mengangkat itu ? Biarkan saya memandu Anda melalui sepotong kode sederhana,
console.log(a)
showNumber()
function showNumber() {
console.log(7)
}
var a = 5
Tunggu ! Dari mana asalnya yang tidak terdefinisi itu?
Setiap kali sebuah program javascript dijalankan, Memori untuk semua variabel dan fungsi dialokasikan terlebih dahulu. Memori yang dicadangkan berisi nilai yang tidak ditentukan untuk variabel dan kode fungsi seperti dalam kasus fungsi. Nilai-nilai dalam ruang memori untuk variabel a dan fungsi showNumber pada gambar di bawah ini adalah waktu yang tepat dari fase ketika kode kita mulai dieksekusi secara nyata setelah menyelesaikan fase alokasi memori.
Sekarang kita dapat mengatakan, Javascript menginisialisasi variabel kita dengan kata kunci khusus yang tidak terdefinisi bahkan sebelum kita menginisialisasi dalam kode. Perilaku khusus Javascript ini dikenal sebagai Mengangkat, dan karena Mengangkat variabel dan fungsi, kita dapat memanggilnya sebelum inisialisasinya tanpa kesalahan.
Mengangkat Let dan Const
Kita baru saja membahas cara mengangkat bekerja dengan variabel yang dideklarasikan dengan Var. Namun seperti yang sudah Anda ketahui, cara yang paling populer dan efisien untuk mendeklarasikan variabel setelah ES6 adalah dengan kata kunci let dan const . Mari kita gali lebih dalam untuk memahami cara kerja hoisting untuk mereka, tentu saja dengan potongan kode sederhana di bawah ini.
console.log(a)
let a = 5
Konsol kami kali ini tidak senang dengan apa yang baru saja kami lakukan. Ketika potongan kode di atas dijalankan, kode tersebut rusak karena kita melanggar aturan javascript dengan mencoba mengakses variabel yang dideklarasikan dengan kata kunci let sebelum inisialisasi lengkapnya. Mari kita lihat apa yang kita punya,
Tidak seperti var, variabel yang dideklarasikan dengan let dan const tidak diinisialisasi sebelum deklarasinya selama pengangkatan dan karenanya tidak dapat mengaksesnya. Area kode yang tepat ini, di mana kita tidak dapat mengakses variabel seperti itu dikenal sebagai Zona Mati Temporal.
Mari kita ubah hal-hal sedikit,
let a;
console.log(a)
a = 5;
Tidak mengherankan kali ini, karena kita telah mendeklarasikan a dan sekarang tersedia untuk kita gunakan. Nilainya tampaknya masih ( tidak terdefinisi) apa yang didapatnya selama mengangkat variabel a karena kita belum menginisialisasinya (hingga baris kedua) dalam kode kita. Ketika kode berlanjut, nilai a ie undefined diganti dengan apa yang kita inisialisasi dengan (5 dalam kasus di atas). Dalam hal ini zona mati temporal variabel a berakhir ( selama mengangkat karena javascript menginisialisasi dengan undefined ) sebagai segera setelah dimulai karena tersedia di atas kode kami dengan nilai yang tidak terdefinisi (hingga kami menginisialisasi secara eksplisit) untuk digunakan.
Konsep TDZ dan Hoisting yang sama dengan let juga berlaku untuk variabel yang dideklarasikan dengan const , selain perbedaannya.
Kesimpulan
Zona mati temporal hanyalah area kode di mana variabel yang dideklarasikan dengan let dan const tidak dapat diakses. Pengembang mana pun yang memiliki hubungan buruk dengan konsep Zona Mati Temporal dapat merusak banyak hal dan mengalami kesulitan dalam proses debug. Selalu menginisialisasi nilai dengan deklarasi variabel adalah pendekatan terbaik yang dapat Anda ambil untuk menghindari Zona Mati Temporal dan konsekuensinya.
Semoga harimu menyenangkan !

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



































