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.