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

WordPress este o platformă pentru site-uri web rapidă, fiabilă, cu facilități multiple pentru dezvoltatori și ușor de utilizat. Totusi, dezvoltatorii și beneficiarii au de multe ori nevoie să adauge funcționalități suplimentare pentru a răspunde nevoilor lor. Acest ghid oferă unele … Citeşte mai mult

Nu a fost votat $3.99 Selectează opțiunile
Ghid WordPress pentru începători
Ghid WordPress pentru începători

WordPress combină simplitatea pentru utilizatorii şi editori cu complexitate suportului software pentru dezvoltatori. Acest lucru îl face mai flexibil, fiind în acelaşi timp uşor de utilizat. Simplitatea sa face posibilă instalarea şi publicarea online rapid. Nimic nu ar trebui să … Citeşte mai mult

Nu a fost votat $2.99$4.77 Selectează opțiunile
Proiectarea, dezvoltarea şi întreţinerea siturilor web
Proiectarea, dezvoltarea şi întreţinerea siturilor web

Un ghid pentru dezvoltatorii web, cu accent pe HTML, XML, JavaScript, SQL, tehnologii web, software web, software pentru dezvoltare web, aplicaţii web, şabloane pentru aplicaţii web, AJAX, servicii web, sindicalizarea web, web design, situri web, găzduirea web, analiza siturilor web, … Citeşte mai mult

Nu a fost votat $2.99$11.97 Selectează opțiunile

Lasă un răspuns

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