T.D.Z yang merupakan singkatan dari Temporal Dead Zone memiliki arti tersendiri. Zona Mati Temporal terdengar seperti frasa fiksi ilmiah, tetapi kita harus menemukan tiga kata ajaib ini untuk memahami istilah dan konsep yang kita gunakan sehari-hari. Jadi sebelum melanjutkan, mari selami lebih dalam tiga kata ini yaitu Temporal, Dead, dan Zone.

Temporal yang berarti sesuatu yang bersifat sementara, kata mati yang berarti keadaan tidak bernyawa, dan zona yang menunjukkan suatu wilayah yang dalam dunia pemrograman berarti yang berhubungan dengan memori atau dapat dianggap sebagai periode waktu atau fase. Jadi penggabungan ketiga istilah ini menceritakan bahwa suatu entitas untuk sementara berada dalam keadaan tidak bernyawa atau tidak aktif dan tidak dapat digunakan untuk pekerjaan apa pun. Untuk memahami topik ini, seseorang harus memiliki pengetahuan tentang kata kunci let dan const dalam JavaScript untuk memahaminya dengan bijak. Kita harus melihat sedikit let dan const serta cakupannya di bagian khusus ini!
Deklarasi const dan let keduanya memiliki cakupan blok, artinya deklarasi tersebut hanya dapat diakses dalam lingkungan {} ; var tidak memiliki batasan seperti itu sehingga didefinisikan dalam lingkup fungsi.
‹script›
misalkan umur = 5;
misalkan ulang tahun = true;
if(ulang tahun){
misalkan umur = 6;< br /> ``br /> console.log(usia); // 5
‹/script›
outputnya adalah 5 karena deklarasi ulang usia ke 6 hanya tersedia di dalam kurung kurawal. Oleh karena itu kata kunci “biarkan” memiliki cakupan blok.
Demikian juga :
‹script›
var age = 5;
var ulang tahun= true;
if(ulang tahun){
var umur = 6;
``br /> console.log(usia); // 6
‹/script›
sekarang outputnya adalah 6, ini karena kata kunci “var” memiliki cakupan global dan mengakses inisialisasi ulang variabel dengan nilai yang berbeda.

DEKLARASI & INISIALISASI

Deklarasi suatu variabel menyatakan bahwa kita mengalokasikan memori untuk variabel tersebut, sedangkan inisialisasi menyatakan bahwa kita memberikan sejumlah nilai pada variabel tersebut.

Sekali lagi datang ke TDZ, Anda mungkin berpikir mengapa perlu mengakses variabel apa pun sebelum inisialisasi ?? Ini benar dan merupakan praktik yang salah tetapi memiliki alasan khusus untuk membiarkan pengembang menulis kode yang baik dan mempermudah proses debug sehubungan dengan kata kunci let dan const.

Mari kita memahami TDZ lebih dekat :
‹script›
console.log(x);
// undefinisi
var x= 6;
console.log(x);
//6
‹/script›
Di sini konteks eksekusi global dibuat dan memori dialokasikan ke x; berarti x mendapat tempat di memori dan mesin JS tidak terdefinisi, sekarang fase eksekusi thread dimulai selama pernyataan console.log ini dijalankan dan mencetak penyimpanan nilai di x, yang tidak terdefinisi.
Sekarang di baris berikutnya ada x yang ditetapkan ke 6, dan nilai x yang tidak ditentukan digantikan oleh 6.
Sekarang menggunakan beberapa kode sehubungan dengan let dan const :
‹script›
console.log(x);
console.log(z);
var x=6;
misalkan z = 4;
console.log(x);
console.log(z);
‹/script›
//
tidak terdefinisi
// referenceError : tidak dapat mengakses z sebelum inisialisasi
Sekali lagi, pertama-tama konteks eksekusi global akan dibuat, dan fase alokasi memori dimulai , selama ini variabel x menempatkan undefinisi di sana. Lebih cepat z mendapat ruang di tempat memori yang berbeda dan sama seperti x yang tidak ditentukan akan ditetapkan sebagai nilai. Sekarang fase eksekusi thread dimulai, selama pernyataan console.log(x) ini dijalankan dan mencetak nilai x, yang tidak ditentukan.
Berikutnya baris, ada console.log(z) javaScript akan memunculkan kesalahan referensi dalam kasus ini dan program akan dihentikan (menyebabkan tdz).

“Jadi kita dapat mengatakan bahwa TDz adalah waktu sejak variabel let ini diangkat hingga nilai tertentu diinisialisasi, waktu di antara keduanya dikenal sebagai Zona Mati Temporal”

Terima kasih !