Văd o mulțime de dezvoltatori front-end care nu sunt siguri care este domeniul de aplicare, chiar dacă îl folosesc în fiecare zi la serviciu. Am decis să simplific termenul „sfera de aplicare” și să vă ofer o bună înțelegere a acestui termen important.

Domenii de aplicare

Vom trece prin 4 tipuri de lunete.

Domeniul de aplicare local

Orice variabile sau funcții din interiorul unei anumite funcții sunt numite domeniu local pentru o anumită funcție.

function localScope(){
  var name="David"; //Local scope of the function.
}

Domeniul de aplicare

Orice funcție are propriul domeniu de aplicare - ce înseamnă? Înseamnă că toate variabilele sau funcțiile din interiorul unei anumite funcții nu sunt accesibile/vizibile pentru funcțiile exterioare, ele sunt locale funcției.

//The variable 'name' can't be used here.
function innerScope(){
  //Start of function scope
  var name = "David";
  //Local scope.
  console.log(name); //Will print to the console "David".
  //End of function scope.
}
//The variable 'name' can't be used here.

În exemplul de mai sus, puteți vedea că variabila name este într-un domeniu de activitate. Variabila name este accesibilă numai din funcție în sine și nu este vizibilă pentru alte funcții din exterior, de exemplu:

function innerScope(){ 
  var name = "David";
}
console.log(name); //Error, Uncaught ReferenceError: name is not defined

Făcând console.log(name), vom primi o eroare de Uncaught ReferenceError: name is not defined. Acest lucru se întâmplă deoarece variabila name nu este în domeniul de aplicare al funcției.

Domeniul de aplicare global

Acest tip de domeniu este atunci când variabilele sunt declarate în afara oricărei funcții. În acest fel, orice funcție poate folosi acea variabilă. Acesta este ceea ce face ca astfel de variabile să fie prezente în Scopul global.

Când variabila este globală, o puteți folosi oriunde în cod.

var name="David"; //Global scope.
//The 'name' variable can be used here.
function printNameFromGlobalScope(){
  console.log(name); //Will print to the console "David".
}
//The 'name' variable can be used here.

După cum puteți vedea în exemplul de mai sus, variabila name este declarată în afara funcției printNameFromGlobalScope() și astfel avem acces la ea chiar dacă nu este declarată în interiorul funcției. Este posibil pentru că a fost declarat în domeniul global.

Sfat avansat

Dacă o variabilă locală și o variabilă globală au același nume, atunci acestea nu se vor suprascrie reciproc.

var name="David"; //Global scope.
function printName(){
  var name="Arik"; //Local scope.
  console.log(name); //Will print to the console "Arik".
}
console.log(name); //Will print to the console "David".

Automat global

Tipul final de domeniu prin care vom parcurge este automat global.

Sfera globală automată are loc atunci când există un apel la o funcție care conține alocarea unei variabile care nu a fost niciodată declarată într-o anumită funcție.

function print automaticallyGlobalName(){
  name="David"; //No let, var or const before assignment a value.
  console.log(name); //Will print to the console "David".
}
automaticallyGlobalName();
console.log(name); //Will print to the console "David".

Acordați atenție pasului din exemplul de cod de mai sus. În primul rând, funcția este declarată. În al doilea rând, există atribuirea unei variabile care nu a fost niciodată declarată. În al treilea rând, am numit această funcție specială. În cele din urmă, imprimăm variabila name.

Al treilea pas este important, deoarece dacă sărim peste acel pas, vom primi undefined. Asta pentru că nu putem adăuga name la domeniul global dacă nu trecem prin el. Deci, atunci când apelăm funcția automaticallyGlobalName, compilatorul observă că variabila name nu este niciodată declarată și o adaugă la domeniul global.

Vă mulțumesc pentru lectură până acum, dacă vă place acest conținut și doriți să mă susțineți în calitate de programator și scriitor să fac mai multe articole ca acesta, „vă rog să semnați până la Medium ca membru (abonament de 5 USD/lună) cu linkul meu și veți obține acces nelimitat la tot ce este de pe Medium.»

Asta este deocamdată, sper că ți-a plăcut articolul.

Urmărește-mă pentru mai multe articole interesante și utile.

Mai mult conținut la PlainEnglish.io. Înscrieți-vă pentru buletinul informativ săptămânal gratuit. Urmărește-ne pe Twitter și LinkedIn. Consultați „Community Discord” și ​​alăturați-vă „Talent Collective”.