Sobes.tech
Junior

Kas yra kintamųjų apimtis (scope) JavaScript'e?

sobes.tech AI

Atsakymas iš AI

Apibrėžiamasis matas nustato kintamųjų, funkcijų ir objektų prieinamumą tam tikroje kodo dalyje.

JavaScript'e yra keletas apibrėžiamojo mato tipų:

  • Pasaulinis apibrėžiamasis matas (Global Scope): Kintamieji, deklaruoti už bet kurios funkcijos ar bloko, yra prieinami bet kurioje kodo dalyje.
  • Funkcinis apibrėžiamasis matas (Function Scope): Kintamieji, deklaruoti funkcijos viduje (iki ES6), yra prieinami tik šioje funkcijoje ir jos viduje esančiose funkcijose.
  • Bloko apibrėžiamasis matas (Block Scope): Kintamieji, deklaruoti naudojant let ir const blokų viduje (pvz., {} arba cikluose), yra prieinami tik tame bloke.

Pavyzdys:

// Pasaulinis apibrėžiamasis matas
let globalVar = "Aš esu globalus";

function someFunction() {
  // Funkcinis apibrėžiamasis matas (iki ES6)
  var functionVar = "Aš esu funkcijos viduje";
  console.log(globalVar); // prieinama globali kintamoji

  if (true) {
    // Bloko apibrėžiamasis matas (naudojant let ir const)
    let blockVar = "Aš esu bloko viduje";
    console.log(functionVar); // prieinama funkcijos kintamoji
    console.log(blockVar); // prieinama bloko kintamoji
  }

  // console.log(blockVar); // klaida: blockVar čia nepasiekiama
}

someFunction();
// console.log(functionVar); // klaida: functionVar čia nepasiekiama

Kintamųjų deklaravimo žodžiai ir jų įtaka apibrėžiamajam matui:

Raktažodis Iki ES6 apibrėžiamasis matas Po ES6 apibrėžiamasis matas
var Funkcinis Funkcinis
let - Blokinis
const - Blokinis

Suprasti apibrėžiamąjį matą yra labai svarbu siekiant išvengti vardų konfliktų ir rašyti švarų bei prognozuojamą kodą.