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