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