„Domeniul de aplicare” se referă la contextul actual de execuție în care codul dumneavoastră poate face referire sau „vede” valori și expresii. Variabilele, obiectele și funcțiile din diferite părți ale codului sunt accesibile în funcție de domeniul lor.
În JavaScript, variabilele, obiectele și funcțiile pot avea un domeniu de aplicare global, un domeniu de aplicare al unui modul, un domeniu de aplicare al blocului sau al unei funcții.
Domeniul global de aplicare în JavaScript
Orice valoare declarată în afara unei funcții sau a unui bloc dintr-un script are un domeniu de aplicare global și orice alt fișier script din programul dumneavoastră îl poate accesa.
De exemplu, declararea unei variabile globale într-un fișier:
// index.js
fie globalVariable = "ceva valoare"
Înseamnă că orice alt script din programul tău îl poate accesa:
// otherScript.js
consolă.log (variabilă globală) // ceva valoare
Declararea variabilelor JavaScript în domeniul global este o practică proastă, deoarece poate duce la poluarea spațiului de nume. Spațiul de nume global este spațiul superior al Javascript care conține variabilele, obiectele și funcțiile. Într-un browser, se atașează la
Fereastră obiect, în timp ce NodeJS folosește un obiect numit global.Poluarea spațiului de nume global poate duce la ciocnirea numelor. Aceasta este o situație în care codul tău încearcă să folosească același nume de variabilă pentru lucruri diferite în același spațiu de nume. Ciocnirile de nume sunt adesea întâlnite în proiecte mari care folosesc mai multe biblioteci terțe.
Domeniul modulului
Un modul este un fișier de sine stătător care încapsulează și exportă bucăți de cod pentru utilizarea altor module dintr-un proiect. Vă permite să vă organizați și să vă întrețineți baza de cod mai eficient.
Modulele ES formalizate modelul modulului JavaScript în JavaScript în 2015.
Variabilele pe care le declarați într-un modul sunt incluse în acel modul, ceea ce înseamnă că nicio altă parte a programului nu le poate accesa.
Puteți utiliza o variabilă declarată într-un modul în afara acestuia numai dacă modulul exportă acea variabilă folosind export cuvânt cheie. Puteți apoi importa acel nume într-un alt modul folosind import cuvânt cheie.
Iată un exemplu care arată exportul unei clase:
// index.js
exportclasăFoo{
constructor(proprietatea_1, proprietatea_2) {
acest.proprietate_1 = proprietate_1
acest.proprietate_2 = proprietate_2
}
}
Și iată cum puteți importa acel modul și utilizați proprietatea pe care o exportă:
// someModule.js
import { Foo } din „./index.js”const bar = new Foo('foo', 'bar')
consolă.log (bar.property_1) // foo
Fișierele nu sunt declarate ca module în mod implicit în JavaScript.
În JavaScript pe partea clientului, puteți declara un script ca modul prin setarea tip atribuit lui modul pe scenariu etichetă:
<tip de script="modul" src="index.js"></script>
În NodeJS, puteți declara un script ca modul prin setarea tip proprietate la modul în dumneavoastră pachet.json fişier:
{
"tip": "modul"
}
Domeniul de aplicare al blocului
Un bloc în JavaScript este locul în care începe și se termină o pereche de bretele.
Variabilele declarate într-un bloc cu lăsa, și const cuvintele cheie sunt incluse în acel bloc, ceea ce înseamnă că nu le puteți accesa în afara acestuia. Acest domeniu de aplicare nu se aplică variabilelor declarate folosind var cuvânt cheie:
{ // Începutul blocului
const one = '1'
lasa doi = '2'
var trei = '3'
} // Sfârșitul bloculuiconsolă.log (unul) // aruncă eroare
consolă.log (trei) // "3"
Variabilele incluse în blocul de mai sus și declarate ca const sau let sunt accesibile numai în interiorul blocului. Cu toate acestea, puteți accesa variabila declarată folosind var cuvânt cheie în afara blocului.
Domeniul de aplicare
Variabilele declarate în interiorul unei funcții sunt denumite în mod obișnuit variabile locale și sunt incluse în funcție. Nu le puteți accesa în afara funcției. Acest domeniu de aplicare se aplică variabilelor declarate cu var, lăsa, și const Cuvinte cheie.
Deoarece variabilele declarate într-o funcție sunt locale pentru funcție, numele variabilelor pot fi reutilizate. Reutilizarea numelor de variabile cu sfera de aplicare a funcției este cunoscută sub denumirea de umbrire a variabilei, iar variabila exterioară se spune că este „umbrită”.
De exemplu:
funcţiemultiplica() {
lăsa unul = 1
var doi = 2
const trei = 3întoarcere unu doi trei
}
// Umbrire variabilă
const trei = „trei” // Nu aruncă o eroare
O înțelegere a regulilor de definire a domeniului este vitală
Având o înțelegere a domeniilor disponibile în JavaScript, vă este mai ușor să evitați erorile. Încercarea de a accesa o variabilă care nu este disponibilă într-un anumit domeniu de aplicare este o sursă bună de erori.
O înțelegere a domeniului de aplicare implică, de asemenea, concepte precum poluarea globală a spațiului de nume, care poate face codul dvs. mai predispus la erori.