Sobes.tech
Junior

JavaScriptda doira nima?

sobes.tech AI

AIdan javob

JavaScriptda ko'lam (Scope) — bu o'zgaruvchilar va funksiyalar aniqlangan va mavjud bo'lgan kontekst.

Oddiy qilib aytganda, u kodda qanday joyda o'zgaruvchi yoki funksiya haqida murojaat qilish mumkinligini belgilaydi.

Bir nechta turdagi ko'lamlar mavjud:

  • Global Ko'lam (Global Scope): Har qanday funksiyadan tashqarida e'lon qilingan o'zgaruvchilar global ko'lamda bo'ladi. Ular kodning istalgan joyidan kirish mumkin.
    // Global o'zgaruvchi
    let globalVar = "Hamma joyda ko'rinadi";
    
    function showGlobal() {
      console.log(globalVar); // Funksiya ichida mavjud
    }
    
    showGlobal();
    
  • Mahalliy (Funksiya) Ko'lam (Local/Function Scope): Funksiya ichida e'lon qilingan o'zgaruvchilar o'sha funksiyaning mahalliy ko'lamida bo'ladi. Ular faqat shu funksiyada va ichki funksiyalarda mavjud, tashqarida emas.
    function showLocal() {
      // Mahalliy o'zgaruvchi
      let localVar = "Faqat bu yerda ko'rinadi";
      console.log(localVar);
    }
    
    showLocal();
    // console.log(localVar); // Xato: localVar aniqlanmagan
    
  • Blok Ko'lam (Block Scope): ES6 (ES2015) bilan let va const yordamida kiritildi. {} ichida, ya'ni kod bloklari, sikl yoki shartlarda e'lon qilingan o'zgaruvchilar blok ko'lamiga ega. var bilan e'lon qilingan o'zgaruvchilar blok ko'lamiga ega emas.
    if (true) {
      // Blok ko'lamli o'zgaruvchi
      let blockVar = "Faqat bu blokda ko'rinadi";
      console.log(blockVar);
    }
    
    // console.log(blockVar); // Xato: blockVar aniqlanmagan
    
    for (let i = 0; i < 2; i++) {
      // Blok ko'lamli o'zgaruvchi sikl ichida
      console.log(i);
    }
    
    // console.log(i); // Xato: i aniqlanmagan (agar let ishlatilgan bo'lsa)
    

Shuningdek, Ko'lam zanjiri (Scope Chain) tushunchasini tushunish muhim. JavaScript o'zgaruvchining qiymatini topishga harakat qilganda, avvalo joriy ko'lamda qidiradi. Agar topilmasa, tashqi (ota) ko'lamga o'tadi va shunday davom etadi, nihoyat global ko'lamga yetadi. Agar o'zgaruvchi ham topilmasa, ReferenceError xatosi chiqariladi.