DEV Community

Cover image for Temporal Dead Zone
Davron
Davron

Posted on • Edited on

Temporal Dead Zone

Assalom alaykum, bugun Javascriptda eng confusing bo'lgan mavzulardan biri "Temporal Dead Zone" ya'ni "Vaqtinchalik O'lik hudud" haqida gaplashamiz.

LET tipidagi o'zgaruvchilarni e'lon qilingan qatordan yuqori qatorlarda o'qish yoki chop etish mumkin emas. Agar boshlang'ich qiymat berilmagan bo'lsa, o'zgaruvchi undefined qiymat bilan ishga tushiriladi.LET tipidagi o'zgaruvchilarni e'lon qilishdan oldin chop etish ReferanceError'ga olib keladi.(VAR tipidagi o'zgaruvchilar esa bunday emas, VAR tipidagi o'zgaruvchilarni e'lon qilishdan avval console'ga chop etsangiz, undefined qiymatini qaytaradi).

{ // TDZ ning boshlanishi
  console.log(name); // undefined chunki var o'zgaruvchi
  console.log(bestChanel); // ReferenceError chunki bu let
  var name = "Davron";
  let bestChanel = 2; // bestChanel o'zgaruvchisi uchun TDZ ni tugashi
}
Enter fullscreen mode Exit fullscreen mode

"Temporal" atamasi qo'llanilishini sababi zona kodni yozish tartibiga (pozitsiyaga) emas, balki bajarish tartibiga (vaqt) bog'liq.Ya'ni quyidagi kod hech qanday error'larsiz ishga tushadi chunki LET o'zgaruvchisidan foydalanadigan funksiya o'zgaruvchi e'lon qilinishidan oldin yaratilgan bo'lsa ham, funktsiya TDZ dan tashqarida chaqiriladi/ishga tushiriladi.

{
    // TDZ shu yerda boshlanadi
    const func = () => console.log(raqam); // OK

    // bu joy DTZ va raqam `ReferenceError` qaytaradi

    let raqam = 3; // raqam uchun DTZ ni tugashi
    func(); //  TDZ dan tashqarida chaqirilyapti!

}
Enter fullscreen mode Exit fullscreen mode

TDZ va typeof

TDZ'dagi LET o'zgaruvchisi uchun typeof operatoridan foydalanish ReferenceError' ga olib keladi :

// 'ReferenceError' chiqaradi
console.log(typeof i);
let i = 10;
Enter fullscreen mode Exit fullscreen mode

Top comments (1)

Collapse
 
ibrohim5133 profile image
Ibrohim5133

zòr omad