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 }
"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! }
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;
Top comments (1)
zòr omad