"Laajuus" viittaa nykyiseen suorituksen kontekstiin, jossa koodisi voi viitata tai "nähdä" arvoja ja lausekkeita. Muuttujat, objektit ja funktiot koodin eri osista ovat käytettävissä niiden laajuuden perusteella.

JavaScriptissä muuttujilla, objekteilla ja funktioilla voi olla yleinen, moduuli-, lohko- tai funktioalue.

Globaali laajuus JavaScriptissä

Kaikilla komentosarjan funktion tai lohkon ulkopuolelle ilmoitetuilla arvoilla on yleinen laajuus, ja kaikki muut ohjelmasi komentosarjatiedostot voivat käyttää sitä.

Esimerkiksi globaalin muuttujan ilmoittaminen yhdessä tiedostossa:

// index.js
anna globalVariable = "jotain arvoa"

Tarkoittaa, että mikä tahansa muu ohjelmasi skripti voi käyttää sitä:

// otherScript.js
konsoli.log (globalVariable) // jokin arvo

JavaScript-muuttujien ilmoittaminen maailmanlaajuisesti on huono käytäntö, koska se voi johtaa nimiavaruuden saastumiseen. Globaali nimiavaruus on Javascriptin ylin tila, joka sisältää muuttujat, objektit ja funktiot. Selaimessa se liitetään Ikkuna objekti, kun taas NodeJS käyttää objektia nimeltä maailmanlaajuisesti.

instagram viewer

Globaalin nimiavaruuden saastuminen voi johtaa nimien törmäykseen. Tämä on tilanne, jossa koodisi yrittää käyttää samaa muuttujan nimeä eri asioille samassa nimiavaruudessa. Nimien törmäyksiä kohdataan usein suurissa projekteissa, joissa käytetään useita kolmannen osapuolen kirjastoja.

Moduulin laajuus

Moduuli on erillinen tiedosto, joka kapseloi ja vie koodinpätkiä projektin muille moduuleille käytettäväksi. Sen avulla voit järjestää ja ylläpitää koodikantaasi tehokkaammin.

ES-moduulit virallistettu JavaScript-moduulin malli JavaScriptissä vuonna 2015.

Moduulissa ilmoittamasi muuttujat on rajattu kyseiseen moduuliin, mikä tarkoittaa, että mikään muu ohjelman osa ei voi käyttää niitä.

Voit käyttää moduulissa ilmoitettua muuttujaa vain sen ulkopuolella, jos moduuli vie kyseisen muuttujan käyttämällä viedä avainsana. Voit sitten tuoda tämän nimen toiseen moduuliin käyttämällä tuonti avainsana.

Tässä on esimerkki luokan viennistä:

// index.js
viedäluokkaaFoo{
rakentaja(omaisuus_1, omaisuus_2) {
Tämä.property_1 = ominaisuus_1
Tämä.omaisuus_2 = ominaisuus_2
}
}

Ja näin voit tuoda kyseisen moduulin ja käyttää sen viemää omaisuutta:

// someModule.js
tuonti { Foo } alkaen './index.js'

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

konsoli.log (bar.property_1) // foo

Tiedostoja ei oletusarvoisesti määritetä moduuleiksi JavaScriptissä.

Asiakaspuolen JavaScriptissä voit määrittää komentosarjan moduuliksi asettamalla tyyppi omistaa moduuli päällä käsikirjoitus tag:

<komentosarjan tyyppi ="moduuli" src="index.js"></script>

NodeJS: ssä voit ilmoittaa komentosarjan moduuliksi asettamalla tyyppi omaisuutta moduuli sinun package.json tiedosto:

{
"tyyppi": "moduuli"
}

Lohkon laajuus

JavaScriptin lohko on paikka, jossa kiharat aaltosulkeet alkavat ja päättyvät.

Muuttujat, jotka on ilmoitettu lohkossa päästää, ja konst avainsanat on kohdistettu kyseiseen lohkoon, joten et voi käyttää niitä sen ulkopuolella. Tämä laajuus ei koske muuttujia, jotka on ilmoitettu käyttämällä var avainsana:

{ // Lohkon alku
const one = '1'
anna kaksi = '2'
var kolme = '3'
} // Lohkon loppu

konsoli.log (yksi) // antaa virheen

konsoli.log (kolme) // "3"

Yllä olevan lohkon sisällä olevat muuttujat, jotka on ilmoitettu const tai let, ovat käytettävissä vain lohkon sisällä. Voit kuitenkin käyttää muuttujaa, joka on ilmoitettu käyttämällä var avainsana lohkon ulkopuolella.

Toiminnan laajuus

Funktion sisällä ilmoitettuja muuttujia kutsutaan yleisesti paikallisiksi muuttujiksi, ja ne ovat funktion laajuisia. Et voi käyttää niitä toiminnon ulkopuolella. Tämä laajuus koskee muuttujia, jotka on ilmoitettu var, päästää, ja konst avainsanoja.

Koska funktiossa ilmoitetut muuttujat ovat paikallisia funktiolle, muuttujien nimiä voidaan käyttää uudelleen. Toimintolaajuisten muuttujien nimien uudelleenkäyttö tunnetaan muuttujan varjostuksena, ja ulomman muuttujan sanotaan olevan "varjostettu".

Esimerkiksi:

toimintomoninkertaistaa() {
päästää yksi = 1
var kaksi = 2
konst kolme = 3

palata yksi kaksi kolme
}

// Muuttuva varjostus
konst kolme = 'kolme' // Ei aiheuta virhettä

Soveltamissääntöjen ymmärtäminen on elintärkeää

JavaScriptin käytettävissä olevien laajuuksien ymmärtäminen helpottaa virheiden välttämistä. Yritetään käyttää muuttujaa, joka ei ole käytettävissä tietyllä alueella, on kypsä virheiden lähde.

Laajuuden ymmärtäminen sisältää myös käsitteitä, kuten globaalin nimitilan saastumisen, mikä voi tehdä koodistasi alttiimman virheille.