Scope se referă la disponibilitatea variabilelor și funcțiilor în anumite părți ale codului.
în JavaScript, o variabilă are două tipuri de domeniu:
- domeniu Global
- domeniu Local
domeniu Global
o variabilă declarată în partea de sus a unui program sau în afara unei funcții este considerată o variabilă de domeniu global.
să vedem un exemplu de variabilă globală a domeniului de aplicare.
// program to print a text let a = "hello";function greet () { console.log(a);}greet(); // hello
în programul de mai sus, variabila a este declarată în partea de sus a unui program și este o variabilă globală. Înseamnă că variabila a poate fi utilizată oriunde în program.
valoarea unei variabile globale poate fi modificată în interiorul unei funcții. De exemplu,
// program to show the change in global variablelet a = "hello";function greet() { a = 3;}// before the function callconsole.log(a);//after the function callgreet();console.log(a); // 3
în programul de mai sus, variabila A este o variabilă globală. Valoarea lui a este bună ziua. Apoi variabila a este accesată în interiorul unei funcții și valoarea se modifică la 3.
prin urmare, valoarea unei modificări după schimbarea acesteia în interiorul funcției.
notă: Este o bună practică să evitați utilizarea variabilelor globale, deoarece valoarea unei variabile globale se poate schimba în diferite domenii ale programului. Poate introduce rezultate necunoscute în program.
în JavaScript, o variabilă poate fi utilizată și fără a o declara. Dacă o variabilă este utilizată fără a o declara, acea variabilă devine automat o variabilă globală.
de exemplu,
function greet() { a = "hello"}greet();console.log(a); // hello
în programul de mai sus, variabila A este o variabilă globală.
dacă variabila a fost declarată folosindlet a = "hello", programul ar arunca o eroare.
notă: În JavaScript, există "strict mode"; în care o variabilă nu poate fi utilizată fără a o declara. Pentru a afla mai multe despre strict, vizitați JavaScript Strict.
domeniu Local
o variabilă poate avea și un domeniu local, adică poate fi accesată numai în cadrul unei funcții.
Exemplul 1: variabila domeniu Local
// program showing local scope of a variablelet a = "hello";function greet() { let b = "World" console.log(a + b);}greet();console.log(a + b); // error
ieșire
helloWorldUncaught ReferenceError: b is not defined
în programul de mai sus, variabila A este o variabilă globală și variabila b este o variabilă locală. Variabila b poate fi accesată numai în interiorul funcției greet. Prin urmare, atunci când încercăm să accesăm variabila b în afara funcției, apare o eroare.
let este Block Scoped
let cuvântul cheie este block-scoped (variabila poate fi accesată numai în blocul imediat).
Exemplul 2: variabila cu scop bloc
// program showing block-scoped concept// global variablelet a = 'Hello';function greet() { // local variable let b = 'World'; console.log(a + ' ' + b); if (b == 'World') { // block-scoped variable let c = 'hello'; console.log(a + ' ' + b + ' ' + c); } // variable x cannot be accessed here console.log(a + ' ' + b + ' ' + c);}greet();
ieșire
Hello WorldHello World helloUncaught ReferenceError: x is not defined
în programul de mai sus, variabila
- a este o variabilă globală. Acesta poate fi accesat oriunde în program.
- b este o variabilă locală. Acesta poate fi accesat numai în interiorul funcției
greet. - c este o variabilă cu scop bloc. Poate fi accesat numai în interiorul blocului de instrucțiuni
if.
prin urmare, în programul de mai sus, primele douăconsole.log() funcționează fără nicio problemă.
cu toate acestea, încercăm să accesăm variabila C cu scop bloc în afara blocului în al treilea console.log(). Acest lucru va arunca o eroare.
notă: în JavaScript, var este funcția scoped și let este bloc-scoped. Dacă încercați să utilizațivar c = 'hello'; în interiorulif declarație în programul de mai sus, întregul program funcționează, ca c este tratat ca o variabilă locală.
pentru a afla mai multe desprelet versusvar, vizitați JavaScript let vs var.