Home » Articole » Articole » Calculatoare » Programare » JavaScript » Variabile JavaScript – Domeniul de aplicare

Variabile JavaScript – Domeniul de aplicare

postat în: JavaScript 0

Un domeniu este o serie de instrucțiuni JavaScript consecutive cu un început și un sfârșit clar definite. JavaScript cunoaște patru tipuri de domenii: bloc, funcție, modul și domeniu global. În funcție de tipul declarației și de locația declarației, variabilele sunt în astfel de domenii. Ele sunt „vizibile”, respectiv „accesibile” numai în cadrul lor. Dacă încercați să le accesați din exterior, va apărea o eroare.

Domeniul bloc

O pereche de paranteze {} creează un bloc. Variabilele declarate într-un bloc prin let sau const sunt legate de acest bloc și nu pot fi accesate în exterior.

"use strict";
let a = 0;
// ...
if (a == 0) {
  let x = 5;
  alert(x);   // arată numărul 5
} else {
  alert(x);   // ReferenceError (cu un 'a' diferit)
}
alert(x);     // ReferenceError

Variabila x este declarată în interiorul unui bloc (în acest exemplu simplu, blocul este format din doar două linii.) Nu este accesibilă în spatele capătului blocului, care este paranteza de închidere } din linia
else
. Același lucru este valabil și în cazul în care variabila x este declarată cu const în loc de let.

Aveți grijă cu cuvântul cheie var; semantica lui este diferită! În primul rând, var nu este în domeniul bloc. În al doilea rând, duce la o tehnică numită hoisting, care a fost folosită în JavaScript încă din primele zile. Hoisting schimbă semantica diferitelor declarații „pe ascuns”. În ceea ce privește var, împarte declarația și inițializarea în două instrucțiuni separate și mută partea de declarație în partea de sus a domeniului curent. Prin urmare, variabila este declarată, dar nu inițializată dacă o utilizați înainte de linia în care este declarată în sursă.

Scriptul

"use strict";
alert(x);   // undefined, not ReferenceError !
x = 1;      // correct, despite of "use strict"
alert(x);   // shows 1
var x = 0;

este schimat în

"use strict";
var x;
alert(x);   // undefined, not ReferenceError !
x = 1;      
alert(x);   // shows 1
x = 0;

Pe de altă parte, cuvântul cheie let păstrează declarația în linia în care este scrisă.

"use strict";
alert(x);     // ReferenceError
x = 1;        // ReferenceError
alert(x);     // ReferenceError
let x = 0;

Există mai multe diferențe. Iată o versiune a primului exemplu al acestui capitol care înlocuiește let cu var:

"use strict";
let a = 0;
// ...
if (a == 0) {
  var x = 5;  // 'var' instead of 'let'
  alert(x);   // shows the number 5
} else {
  alert(x);   // ReferenceError (with a different 'a')
}
alert(x);     // shows the number 5  !!

Vă recomandăm să evitați complet var din două motive:

  • Tehnica hoisting a JavaScript nu este ușor de înțeles.
  • Alți membri ai limbajelor din familia C nu o cunosc.

În loc să utilizați var, utilizați cuvântul cheie let.

Domeniul de aplicare funcție

O funcție își creează propriul domeniu de aplicare. Variabilele declarate în domeniul de aplicare al funcției nu pot fi accesate din exterior.

"use strict";
function func_1() {
  let x = 5; // x poate fi utilizat doar în func_1
  alert("Inside function: " + x);
}
func_1();
alert(x); // Cauzează o eroare

Domeniul de aplicare al funcției este uneori numit domeniu local, deoarece acesta era numele în versiunile ECMAScript mai veche.

Domeniul de aplicare modul

Este posibil să împărțiți scripturi uriașe în mai multe fișiere și să lăsați funcțiile și variabilele să comunice între ele. Fiecare fișier își creează propriul domeniu de aplicare, domeniul de aplicare al modulului. Capitolul Module explică mai multe despre asta.

Domeniul de aplicare global

Variabilele sau funcțiile sunt în domeniu global dacă sunt declarate la nivelul superior al unui script (în afara tuturor blocurilor și funcțiilor).

"use strict";
let x = 42;   // 'x' aparține domeniului global

// definește o funcție
function func_1() {
  // folosește variabila contextului global
  alert("In function: " + x);
}

// pornește funcția
func_1();   // arată "In function: 42"
alert(x);   // arată "42"

x este declarat la nivelul superior, prin urmare se află în domeniul global și poate fi folosit peste tot. Dar în exemplul următor declarația lui x este cuprinsă de { }. Prin urmare, nu mai este în domeniu global.

"use strict";
{
  let x = 42;   // 'x' nu este în domeniul global
}
alert(x);       // ReferenceError

Sugestie: Utilizarea domeniului de aplicare global nu este considerată o bună practică. Are tendința de a crea efecte secundare nedorite. În schimb, încercați să vă modularizați codul și să lăsați părțile să comunice prin interfețe.

(Include texte din Wikibooks traduse și adaptate de Nicolae Sfetcu)

Ghid WordPress pentru dezvoltatori
Ghid WordPress pentru dezvoltatori

Resursa esențială care te va ghida pas cu pas în lumea complexă a platformei WordPress.

Nu a fost votat 18.29 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Ghid WordPress pentru începători
Ghid WordPress pentru începători

Descoperă arta gestionării site-urilor web cu WordPress!

Nu a fost votat 13.70 lei25.11 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.
Proiectarea, dezvoltarea şi întreţinerea siturilor web
Proiectarea, dezvoltarea şi întreţinerea siturilor web

Ghidul complet pentru proiectarea, dezvoltarea și întreținerea siturilor web, o resursă indispensabilă

Nu a fost votat 13.70 lei54.86 lei Selectează opțiunile Acest produs are mai multe variații. Opțiunile pot fi alese în pagina produsului.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *