"Ulatusala" viitab praegusele täitmise kontekstile, milles teie kood võib viidata või "näha" väärtusi ja väljendeid. Muutujad, objektid ja funktsioonid koodi erinevatest osadest on juurdepääsetavad nende ulatuse alusel.

JavaScriptis võib muutujatel, objektidel ja funktsioonidel olla globaalne ulatus, mooduli ulatus, ploki ulatus või funktsiooni ulatus.

Globaalne ulatus JavaScriptis

Kõik väärtused, mis on deklareeritud väljaspool funktsiooni või skripti plokki, on globaalse ulatusega ja mis tahes muu teie programmi skriptifail pääseb sellele juurde.

Näiteks globaalse muutuja deklareerimine ühes failis:

// index.js
olgu globalVariable = "mingi väärtus"

Tähendab, et mis tahes muu skript teie programmis pääseb sellele juurde:

// otherScript.js
konsool.log (globaalne muutuja) // mingi väärtus

JavaScripti muutujate deklareerimine globaalses ulatuses on halb tava, sest see võib viia nimeruumi saastamiseni. Globaalne nimeruum on Javascripti ülemine ruum, mis sisaldab muutujaid, objekte ja funktsioone. Brauseris kinnitub see Aken objekt, samas kui NodeJS kasutab objekti nimega globaalne.

instagram viewer

Globaalse nimeruumi saastamine võib põhjustada nimede kokkupõrkeid. See on olukord, kus teie kood proovib kasutada sama muutuja nime erinevate asjade jaoks samas nimeruumis. Nimede kokkupõrkeid tuleb sageli ette suurtes projektides, mis kasutavad mitut kolmanda osapoole teeki.

Mooduli ulatus

Moodul on iseseisev fail, mis kapseldab ja ekspordib kooditükke teistele projekti moodulitele kasutamiseks. See võimaldab teil koodibaasi tõhusamalt korraldada ja hooldada.

ES moodulid vormistatud JavaScripti mooduli muster JavaScriptis 2015. aastal.

Muutujad, mille deklareerite moodulis, kuuluvad sellele moodulile, mis tähendab, et ükski teine ​​programmi osa ei pääse neile juurde.

Saate kasutada moodulist väljaspool deklareeritud muutujat ainult siis, kui moodul ekspordib selle muutuja, kasutades eksportida märksõna. Seejärel saate selle nime importida teise moodulisse, kasutades importida märksõna.

Siin on näide, mis näitab klassi eksporti.

// index.js
eksportidaklassFoo{
konstruktor(omadus_1, omadus_2) {
see.property_1 = omadus_1
see.omadus_2 = omadus_2
}
}

Ja siin saate seda moodulit importida ja selle eksporditavat atribuuti kasutada.

// someModule.js
importida { Foo } alates './index.js'

const riba = new Foo('foo', 'baar')

konsool.log (bar.property_1) // foo

JavaScriptis ei deklareerita faile vaikimisi moodulitena.

Kliendipoolses JavaScriptis saate skripti deklareerida moodulina, määrates tüüp omistada moodul peal stsenaarium silt:

<skripti tüüp="moodul" src="index.js"></script>

NodeJS-is saate skripti deklareerida moodulina, määrates tüüp vara juurde moodul sinus package.json fail:

{
"tüüp": "moodul"
}

Ploki ulatus

JavaScripti plokk on koht, kus alustavad ja lõpetavad lokkis sulgud.

Muutujad, mis on deklareeritud ploki sees laseja konst märksõnad on selle ploki ulatusega, mis tähendab, et te ei pääse neile juurde väljaspool seda. See ulatus ei kehti muutujatele, mis on deklareeritud kasutades var märksõna:

{ // Ploki algus
const üks = '1'
olgu kaks = '2'
var kolm = '3'
} // Ploki lõpp

konsool.log (üks) // viskab vea

konsool.log (kolm) // "3"

Ülaltoodud plokis olevad muutujad, mis on deklareeritud kui const või let, on juurdepääsetavad ainult ploki sees. Siiski saate juurdepääsu muutujale, mis on deklareeritud kasutades var märksõna väljaspool plokki.

Funktsiooni ulatus

Funktsiooni sees deklareeritud muutujaid nimetatakse tavaliselt kohalikeks muutujateks ja need on funktsiooni ulatusega. Te ei pääse neile juurde väljaspool funktsiooni. See ulatus kehtib muutujatele, mis on deklareeritud var, laseja konst märksõnad.

Kuna funktsioonis deklareeritud muutujad on funktsioonile kohalikud, saab muutujate nimesid uuesti kasutada. Funktsiooni ulatusega muutujate nimede taaskasutamist nimetatakse muutujate varjutamiseks ja välimine muutuja on "varjutatud".

Näiteks:

funktsioonikorrutada() {
lase üks = 1
var kaks = 2
konst kolm = 3

tagasi üks kaks kolm
}

// Muutuv varjutus
konst kolm = 'kolm' // Ei viska viga

Ulatusreeglite mõistmine on ülioluline

JavaScripti saadaolevate ulatuste mõistmine muudab vigade vältimise lihtsamaks. Püüdes pääseda juurde muutujale, mis pole teatud ulatuses saadaval, on küps vigade allikas.

Ulatuse mõistmine hõlmab ka selliseid mõisteid nagu globaalne nimeruumi saaste, mis võib muuta teie koodi vigadele kalduvamaks.