Junior
Kas yra apimtis JavaScript?
sobes.tech AI
Atsakymas iš AI
JavaScript'o matymo sritis (Scope) yra kontekstas, kuriame yra apibrėžtos ir prieinamos kintamieji ir funkcijos.
Paprasčiau tariant, ji nustato, kur galima nuoroda į kintamąjį ar funkciją kode.
Yra keli matymo sričių tipai:
- Globali matymo sritis (Global Scope): Kintamieji, deklaruoti už bet kurios funkcijos, yra globalios matymo srities dalis. Jie prieinami iš bet kurios kodo vietos.
// Globalus kintamasis let globalVar = "Aš matau visur"; function showGlobal() { console.log(globalVar); // prieinama funkcijoje } showGlobal(); - Vietinė (funkcinė) matymo sritis (Local/Function Scope): Kintamieji, deklaruoti funkcijos viduje, yra šios funkcijos vietinėje matymo srityje. Jie prieinami tik šioje funkcijoje ir jos vidinėse funkcijose, bet ne išorėje.
function showLocal() { // Vietinis kintamasis let localVar = "Aš matau tik čia"; console.log(localVar); } showLocal(); // console.log(localVar); // klaida: localVar nėra apibrėžtas - Blokinė matymo sritis (Block Scope): Atsirado su ES6 (ES2015) su
letirconstįvedimu. Kintamieji, deklaruoti suletarbaconstviduje skliaustų ({}), ar tai būtų kodo blokai, ciklai ar sąlyginiai operatoriai, turi blokinę matymo sritį. Kintamieji, deklaruoti suvar, neturi blokinės matymo srities.if (true) { // Blokinė matymo srities kintamasis let blockVar = "Aš matau tik šiame bloke"; console.log(blockVar); } // console.log(blockVar); // klaida: blockVar nėra apibrėžtas for (let i = 0; i < 2; i++) { // Ciklo blokinė matymo sritis console.log(i); } // console.log(i); // klaida: i nėra apibrėžtas (jei naudotas `let`)
Svarbu taip pat suprasti Matymo srities grandinę (Scope Chain). Kai JavaScript bando rasti kintamojo reikšmę, jis pirmiausia žiūri į esamą matymo sritį. Jei ten neranda, pereina į išorinę (tėvų) matymo sritį ir taip toliau, iki globalios matymo srities. Jei neranda net ten, išmetama klaida ReferenceError.