„Taikymo sritis“ reiškia dabartinį vykdymo kontekstą, kuriame jūsų kodas gali nurodyti arba „matyti“ reikšmes ir išraiškas. Kintamieji, objektai ir funkcijos iš įvairių kodo dalių pasiekiami atsižvelgiant į jų taikymo sritį.

„JavaScript“ kintamieji, objektai ir funkcijos gali turėti visuotinę, modulio, bloko arba funkcijos apimtį.

Visuotinė apimtis JavaScript

Bet kuri reikšmė, deklaruota už funkcijos arba scenarijaus bloko ribų, turi visuotinę taikymo sritį ir bet kuris kitas jūsų programos scenarijaus failas gali ją pasiekti.

Pavyzdžiui, pasaulinio kintamojo deklaravimas viename faile:

// index.js
tegul globalVariable = "kažkokia vertybė"

Reiškia, bet kuris kitas jūsų programos scenarijus gali jį pasiekti:

// otherScript.js
konsolė.log (pasaulinis kintamasis) // kažkokia vertė

„JavaScript“ kintamųjų deklaravimas pasauliniu mastu yra bloga praktika, nes tai gali sukelti vardų erdvės taršą. Visuotinė vardų sritis yra viršutinė Javascript erdvė, kurioje yra kintamieji, objektai ir funkcijos. Naršyklėje jis pridedamas prie Langas objektas, o NodeJS naudoja objektą pavadinimu globalus.

instagram viewer

Pasaulinės vardų erdvės užteršimas gali sukelti vardų susidūrimą. Tai situacija, kai jūsų kodas bando naudoti tą patį kintamojo pavadinimą skirtingiems dalykams toje pačioje vardų erdvėje. Vardų susidūrimai dažnai susiduria su dideliais projektais, kuriuose naudojamos kelios trečiųjų šalių bibliotekos.

Modulio taikymo sritis

Modulis yra atskiras failas, kuriame įterpiami ir eksportuojami kodo fragmentai kitiems projekto moduliams. Tai leidžia efektyviau tvarkyti ir prižiūrėti kodų bazę.

ES moduliai formalizuoti „JavaScript“ modulio šabloną „JavaScript“ 2015 m.

Kintamieji, kuriuos deklaruojate modulyje, apima tą modulį, o tai reiškia, kad jokia kita programos dalis negali jų pasiekti.

Galite naudoti kintamąjį, deklaruotą modulyje už jo ribų, tik jei modulis eksportuoja tą kintamąjį naudodamas eksportuoti raktažodį. Tada galite importuoti šį pavadinimą į kitą modulį naudodami importuoti raktažodį.

Štai pavyzdys, rodantis klasės eksportavimą:

// index.js
eksportuotiklasėFoo{
konstruktorius(nuosavybė_1, nuosavybė_2) {
tai.property_1 = nuosavybė_1
tai.property_2 = nuosavybė_2
}
}

Štai kaip galite importuoti tą modulį ir naudoti jo eksportuojamą nuosavybę:

// someModule.js
importuoti { Foo } „./index.js“

const bar = new Foo ('foo', 'baras')

konsolė.log (bar.property_1) // foo

Pagal numatytuosius nustatymus „JavaScript“ failai nėra deklaruojami kaip moduliai.

Kliento pusės JavaScript galite paskelbti scenarijų kaip modulį, nustatydami tipo priskirti modulis ant scenarijus žyma:

<scenarijaus tipas ="modulis" src="index.js"></script>

„NodeJS“ scenarijų galite paskelbti kaip modulį, nustatydami tipo nuosavybė į modulis tavo package.json failas:

{
"tipo": "modulis"
}

Bloko taikymo sritis

„JavaScript“ blokas yra vieta, kur prasideda ir baigiasi garbanotų breketų pora.

Kintamieji, deklaruoti bloke su leisti, ir konst raktiniai žodžiai yra priskirti tam blokui, tai reiškia, kad negalite jų pasiekti už jo ribų. Ši apimtis netaikoma kintamiesiems, deklaruotiems naudojant var raktažodis:

{ // Bloko pradžia
const one = '1'
tegul du = '2'
var trys = '3'
} // Bloko pabaiga

konsolė.log (vienas) // išmeta klaida

konsolė.log (trys) // "3"

Kintamieji, esantys aukščiau esančiame bloke ir deklaruoti kaip const arba let, pasiekiami tik bloko viduje. Tačiau galite pasiekti kintamąjį, deklaruotą naudodami var raktinis žodis už bloko ribų.

Funkcijos apimtis

Kintamieji, deklaruoti funkcijoje, paprastai vadinami vietiniais kintamaisiais ir yra priskiriami funkcijai. Negalite jų pasiekti už funkcijos ribų. Ši apimtis taikoma kintamiesiems, deklaruotiems su var, leisti, ir konst raktinius žodžius.

Kadangi funkcijoje deklaruojami kintamieji yra lokalūs funkcijai, kintamųjų pavadinimus galima naudoti pakartotinai. Pakartotinis funkcijų apimties kintamųjų pavadinimų naudojimas yra žinomas kaip kintamųjų šešėliavimas, o išorinis kintamasis yra „tamsuotas“.

Pavyzdžiui:

funkcijapadauginti() {
leisti vienas = 1
var du = 2
konst trys = 3

grąžinti vienas du trys
}

// Kintamasis šešėliavimas
konst trys = "trys" // Neišmeta klaidos

Labai svarbu suprasti taikymo srities taisykles

Suvokę galimas „JavaScript“ apimtis, galite lengviau išvengti klaidų. Bandymas pasiekti kintamąjį, kuris nepasiekiamas tam tikroje srityje, yra rimtas klaidų šaltinis.

Apimties supratimas taip pat apima tokias sąvokas kaip pasaulinė vardų erdvės tarša, dėl kurios jūsų kodas gali būti labiau linkęs į klaidas.