Variabile globale Javascript - variabile locale și globale în javascript. Domeniul de aplicare al variabilelor de funcție în JavaScript - Variabile globale și locale Js Variabile locale și globale

Această lecție în patru părți acoperă scrisul de calitate. Cod JavaScript, care va fi ușor de întreținut și dezvoltat, chiar dacă va trebui să reveniți la proiect după mult timp.

Scrieți codul cu așteptarea că va trebui să fie acceptat

Greșeli software au propriul lor cost. Costul lor este exprimat în timpul necesar pentru a le repara. Greșelile din proiectele lansate public sunt deosebit de costisitoare. Este foarte bine dacă puteți remedia erorile imediat, când structura codului este încă proaspătă în memoria dvs. și puteți găsi rapid zona cu probleme. Dar dacă ați trecut la alte sarcini și ați uitat deja caracteristicile unui anumit cod, atunci revenirea la proiect va necesita:

  • E timpul să studiezi și să înțelegi problema.
  • Este timpul să înțelegeți codul care cauzează problema.

O altă problemă care afectează proiectele mari sau companiile este aceea că persoana care remediază erorile nu este persoana care le creează (și adesea nu este persoana care le găsește în proiect). Prin urmare, reducerea timpului necesar pentru înțelegerea codului devine o problemă critică, indiferent dacă ați scris singur codul cu ceva timp în urmă sau a fost scris de un alt dezvoltator din echipa dvs. Răspunsul la întrebare va afecta semnificativ atât rezultatul financiar al proiectului, cât și nivelul de satisfacție al dezvoltatorilor, deoarece uneori este mai bine să faceți totul într-un mod nou decât să petreceți ore și zile întreținând cod vechi, de neînțeles.

Un alt fapt despre dezvoltarea de software este că de obicei durează mai mult citind cod, nu crearea lui. Când problema este enunțată inițial, dezvoltatorul se concentrează și se cufundă în întrebare, apoi se așează și poate crea cod semnificativ într-o seară. Atunci probabil că codul funcționează, dar în natura firească a produselor software apar situații care necesită revizuiri repetate ale codului. De exemplu:

  • Sunt detectate erori.
  • Noi caracteristici sunt adăugate la proiect.
  • Aplicația trebuie lansată într-un mediu nou (de exemplu, a apărut un nou browser).
  • Scopul codului se schimbă.
  • Codul trebuie să fie complet rescris sau portat într-o altă arhitectură sau limbaj de programare.

Ca urmare, se vor cheltui câteva ore de lucru pentru a scrie cod și câteva zile de lucru pentru citire. Prin urmare, crearea unui cod ușor de întreținut este esențială pentru succesul unei aplicații.

Codul ușor de întreținut are următoarele caracteristici:

  • Este ușor de citit.
  • Este bine structurat, iar părțile sunt consistente între ele.
  • El este previzibil.
  • Se pare că a fost scris de o singură persoană.
  • Documentat.
Minimizarea utilizării variabilelor globale

JavaScript folosește funcții pentru a gestiona contextul. Variabilele declarate în interiorul funcțiilor sunt locale pentru acestea și nu sunt accesibile în afara funcțiilor. Variabilele globale sunt declarate în afara funcțiilor sau pur și simplu utilizate fără declarație.

Fiecare mediu JavaScript are un obiect global care este utilizat în afara funcțiilor. Fiecare variabilă globală pe care o creați devine o proprietate a obiectului global. În browsere, pentru comoditate, există o proprietate suplimentară pe obiectul global numită fereastră care (de obicei) indică către obiectul global în sine. Următorul cod arată un exemplu de creare și accesare a variabilelor globale în mediul browser:

Var myglobal = „bună ziua”; console.log(myglobal); // „bună ziua” console.log(window.myglobal); // "bună ziua" console.log(fereastră["myglobal"]); // „bună ziua” console.log(this.myglobal); // "Buna ziua"

Probleme cu variabilele globale

Problema cu variabilele globale este că acestea vor fi disponibile în întregul cod JavaScript al aplicației sau paginii dvs. Ele se află în spațiul de nume global și există întotdeauna o șansă pentru coliziunile de denumire, în care două părți diferite ale aplicației definesc variabile globale cu același nume, dar în scopuri diferite.

De asemenea, pagina web include de obicei cod scris de alți dezvoltatori. De exemplu:

  • Alte biblioteci JavaScript.
  • Scripturi de la partenerii de publicitate.
  • Cod pentru urmărirea și analiza utilizatorilor.
  • Diverse widget-uri, butoane și plugin-uri.

Să presupunem că într-unul dintre scripturile terță parte este definită o variabilă globală, care se numește, de exemplu, rezultat . Apoi definiți o altă variabilă globală într-una dintre funcțiile dvs. și o numiți rezultat. Ca rezultat, ultima declarație a variabilei rezultat o va înlocui pe prima și scriptul terță parte poate înceta să funcționeze.

Prin urmare, pentru a combina cu succes diferite coduri pe o singură pagină, este important să folosiți cât mai puține variabile globale. În această problemă, utilizarea directivei var la declararea variabilelor joacă un rol semnificativ.

Din păcate, este foarte ușor să creezi neintenționat o variabilă globală în JavaScript datorită a două caracteristici ale acesteia. În primul rând, puteți utiliza o variabilă fără a o declara. În al doilea rând, JavaScript are o definiție globală implicită, ceea ce înseamnă că orice variabilă nedeclarată devine o proprietate a obiectului global (și va fi accesibilă ca o variabilă globală declarată corect). De exemplu:

Funcția sum(x, y) ( // rău: rezultat global implicit = x + y; rezultat returnat; )

În acest cod, variabila rezultat este utilizată fără declarație. Codul funcționează bine, dar după apelarea funcției veți ajunge cu o altă variabilă rezultat în spațiul de nume global, ceea ce poate duce la probleme.

Regula de minimizare este definirea variabilelor folosind directiva var. Mai jos este o versiune îmbunătățită a funcției sum():

Funcția sum(x, y) ( var rezultat = x + y; returnează rezultat; )

O altă opțiune proastă pentru crearea globale implicite este înlănțuirea unei atribuiri de valoare într-o declarație var. În exemplul următor, variabila a va fi locală, iar variabila b va fi globală, ceea ce probabil nu este intenția creatorului de cod:

// rău, nu folosiți funcția foo() ( var a = b = 0; // ... )

Dacă ești surprins de ceea ce se întâmplă, este o chestiune de calcule de la dreapta la stânga. Expresia b = 0 este executată mai întâi și, prin urmare, variabila b nu va fi declarată. Valoarea returnată a expresiei va fi 0 și este atribuită unei noi variabile locale a, care este declarată de directiva var. Această definiție a variabilelor este echivalentă cu următoarea notație:

Var a = (b = 0);

Dacă ați declarat deja variabilele, atunci reprezentarea înlănțuită va funcționa bine și nu va crea variabile globale nedorite:

Funcția foo() (var a, b; a = b = 0; // ambele variabile sunt locale)

Un alt motiv pentru a evita utilizarea variabilelor globale este portabilitatea codului. Dacă intenționați să rulați codul într-un mediu diferit, atunci variabilele globale pot suprascrie obiecte care nu se află în mediul original (deci poate părea că numele pe care îl utilizați este sigur).

Efectul secundar al declarației var uitate

Există o mică diferență între variabilele globale definite explicit și implicite. Este capacitatea de a șterge o variabilă folosind operatorul de ștergere:

  • O variabilă globală declarată printr-o declarație var (creată într-un program în afara funcțiilor) nu poate fi ștearsă.
  • O variabilă globală implicită creată fără declarație (indiferent de locul în care a fost creată) poate fi ștearsă.

Din punct de vedere tehnic, o variabilă globală implicită este o proprietate a obiectului global, nu o variabilă. Proprietățile pot fi șterse folosind operatorul de ștergere, dar variabilele nu pot:

// definim trei variabile globale var global_var = 1; global_novar = 2; // rău (funcție () ( global_fromfunc = 3; // rău )()); // Încercarea de a șterge șterge global_var; // false delete global_novar; // adevărat delete global_fromfunc; // true // Verificarea tipului de ștergere a global_var; // tipul „număr” global_novar; // tip „nedefinit” de global_fromfunc; // "nedefinit"

Accesarea unui obiect global

În browsere, obiectul global este accesibil oriunde în codul tău prin proprietatea ferestrei (cu excepția cazului în care faci ceva special sau neașteptat, cum ar fi declararea unei variabile locale numite fereastră). Dar în alte medii, această proprietate de confort poate fi disponibilă într-un mod diferit (sau chiar să nu fie disponibilă deloc pentru programator). Dacă aveți nevoie de acces la obiectul global fără a utiliza identificatorul de fereastră, atunci puteți utiliza următoarea metodă la orice nivel al unui spațiu de nume al funcției imbricate:

Var global = (funcție () ( return this; )());

Astfel, este întotdeauna posibil să accesați obiectul global, deoarece în interiorul unei funcții care este apelată ca funcție (și nu ca constructor cu o nouă declarație), aceasta indică întotdeauna obiectul global.

Șablon de declarație unică var

Utilizarea unei singure declarații var în partea de sus a funcției este o practică foarte utilă. Această metodă are următoarele avantaje:

  • Oferă un singur loc pentru declararea tuturor locale variabilele funcției.
  • Previne erorile logice atunci când o variabilă este utilizată înainte de a fi declarată.
  • Ajută să vă amintiți să declarați variabilele locale și, prin urmare, reduce numărul de variabile globale.

Un șablon cu o declarație var arată astfel:

Funcția func() ( var a = 1, b = 2, sum = a + b, myobject = (), i, j; // Codul funcției... )

Utilizați o singură declarație var pentru a declara mai multe variabile, separate prin virgule. O completare excelentă ar fi inițializarea variabilelor cu date sursă atunci când le declarați. Acest lucru previne erorile logice (toate variabilele neinițializate sunt setate implicit la nedefinite) și îmbunătățește lizibilitatea codului. Când te uiți la cod mai târziu, vei putea determina scopul unei variabile după valoarea sa inițială (de exemplu, vei vedea imediat că este un obiect sau un număr întreg).

De asemenea, puteți efectua o operație asupra declarației de variabile, cum ar fi sum = a + b din exemplul de cod anterior. Un alt exemplu de lucru este manipularea DOM. Puteți atribui link-uri către Elemente DOM variabile locale atunci când sunt declarate:

Funcția updateElement() ( var el = document.getElementById("rezultat"), style = el.style; // efectuează operații cu el și stil... )

Lifting: problemă cu declarațiile var împrăștiate

JavaScript permite mai multe declarații var oriunde într-o funcție și acestea acționează la fel, indiferent de plasare. Această caracteristică este cunoscută sub numele de „ridicare”. Acest comportament poate duce la erori logice atunci când utilizați o variabilă și apoi o declarați pentru codul funcției ulterioare. Pentru JavaScript, deoarece o variabilă se află în același spațiu de nume (în aceeași funcție), se presupune că este declarată, chiar dacă este folosită înaintea directivei var. De exemplu

// bad myname = "global"; // funcția variabilă globală func() ( alert(numele meu); // „nedefinit” var numele meu = „local”; alert(numele meu); // „local” ) func();

În acest exemplu, primul apel la alert() este de așteptat să producă mesajul „global”, iar al doilea apel la „local”. O așteptare rezonabilă deoarece la primul apel variabila locală myname nu este declarată și funcția trebuie să utilizeze variabila globală myname . Dar, în realitate, lucrurile funcționează diferit. Primul apel la alert() va returna „nedefinit” deoarece numele meu este tratat ca o variabilă locală declarată în funcție (deși declarația va veni mai târziu). Toate declarațiile de variabile sunt ridicate în partea de sus a funcției. Prin urmare, pentru a evita acest tip de eroare, trebuie să declarați toate variabilele în partea de sus a funcției.

Exemplul anterior se va comporta ca și cum ar fi implementat astfel:

Numele meu = "global"; // funcția variabilă globală func() (var numele meu; // la fel ca -> var numele meu = nedefinit; alert(numele meu); // "nedefinit" numele meu = "local"; alertă (numele meu); // "local" ) func();

Merită menționat faptul că implementarea efectivă a codului este mai complexă. Există două etape de procesare a codului. Prima etapă creează variabile, declarații de funcții și parametri formali și definește contextul. A doua etapă execută codul, evaluează funcțiile și creează identificatori necalificați (variabile nedeclarate). Dar pentru utilizare practică, puteți folosi conceptul de ridicare, care descrie bine comportamentul codului.

O zi bună, fani JavaScript și abonații mei fideli. În postarea de astăzi, vă voi spune în detaliu despre cum sunt create variabilele globale și locale în JavaScript. Cu siguranță voi defini termeni importanți, voi vorbi despre caracteristicile declarării și inițializării variabilelor, voi descrie ce este un domeniu și cum funcționează elementele create în el.

Toate acestea se aplică celor mai elementare cunostinte de baza limba. Fără să înțelegeți toate acestea, nu veți putea să avansați și să vă dezvoltați abilitățile de programare js. În plus, conceptele cheie îți vor fi utile nu doar în această specializare, ci și în domeniul IT în general. Ei bine, să începem!

Ce este o variabilă și cum este creată?

O variabilă este un element al unui limbaj de programare pentru care este alocată o zonă de memorie și în care sunt stocate anumite valori.

Pot exista un număr mare de variabile și toate trebuie să aibă un nume unic.

Există două tipuri de variabile: globale și locale. Singura lor diferență este zone diferite vizibilitatea variabilelor. Asa de, elemente globale sunt vizibile pe întregul cod, în timp ce cele locale sunt vizibile doar în zona restrânsă în care au fost declarate.

Apropo, încearcă să numești elementele cu nume logice și de înțeles chiar din prima zi, din primul tău cod. Pentru că mai târziu, când lucrați cu programe grele, după o anumită perioadă de timp nu vă veți mai aminti ce înseamnă, de exemplu, „aa1” sau „perem3”.

Și absolut nimic nu este clar din titlu! Acest lucru nu este atât de rău, la urma urmei, nu este atât de greu să-ți înțelegi propriile scrieri. Ce veți face dacă vi se va da sarcina de a finaliza sarcini într-un alt program despre care nu ați auzit până acum? Cu astfel de nume, analiza implementării software-ului va ucide mult timp util.

Am citit notația, acum să revenim la declararea variabilelor.

Pentru a crea o variabilă trebuie mai întâi să scrieți cuvânt cheie var , urmat de numele în sine. Cam asa arata:

var text = „Bună, utilizator!”

După aceasta, textul este accesat fără „var”:

text = „Text nou”.

În acest caz, valoarea va fi suprascrisă.

Pentru o mai bună înțelegere, luați în considerare un exemplu în care este creată o singură variabilă. Ne vom întoarce la sensul său înainte și după rescriere.

1 2 3 4 var text = „Bună, utilizator!”; alertă(text); // va imprima „Bună, utilizator!” text= „Text nou!”; alertă(text); // va imprima „Text nou!”

var text = „Bună, utilizator!”; alertă(text); // va imprima „Bună, utilizator!” text= „Text nou!”; alertă(text); // va imprima „Text nou!”

Caracteristicile obiectelor globale

Toate obiectele create în codul js sunt împărțite în globale și locale. Mai sus am explicat care este diferența dintre ele. Acum să aruncăm o privire mai atentă asupra obiectelor globale.

Toate sunt funcții și variabile care sunt declarate în corpul principal al codului, adică. nu în interiorul nici unei funcții. Toate acestea în js devin automat proprietăți ale unui obiect global, care în browsere este clar disponibil sub cuvântul fereastră. Să ne uităm la un exemplu.

var pret = 145; // creează o variabilă globală

alertă(fereastră.preț); // răspuns: 145

Până acum totul este simplu, dar fiți pregătiți pentru capcane. Uneori, fără a cunoaște specificul salvării și suprascrierii valorilor variabilelor, puteți suprascrie parametri foarte importanți. Astfel de erori sunt destul de greu de urmărit și imposibil de găsit folosind compilatoare. Prin urmare, analizați cu atenție următorul material.

Capcane și domeniul de aplicare

Pentru a înțelege mai bine problema, voi arăta mai întâi un mic program în care voi crea o variabilă locală într-o funcție, iar apoi în afara limitelor acesteia - una globală.

function test() ( p = 2; return p; ) alert(p); // nedefinit p = „text important”; alertă(p); // va afișa „text important” test(); // apelează funcția alert(p); // va tipări 2

Inițial, în funcția de testare, am inițializat o variabilă locală cu valoarea 2, apoi am creat o variabilă text globală care stochează câteva date importante.

Și aici apare acel „bloc subacvatic”.

În primul rând, datorită faptului că am folosit crearea de elemente conform regulilor standardului JavaScript învechit, toate variabilele „p” au fost create numai în momentul atribuirii (la folosirea directivei var, variabilele sunt create imediat cu valoarea nedefinit, iar în timpul inițializării prin „= » valoarea este suprascrisă).

În al doilea rând, în acest caz, pentru a atribui o valoare elementelor create implicit în js, se folosește una existentă sau se creează o nouă variabilă globală. Prin urmare, în exemplul de mai sus, după apelarea funcției de testare, valoarea „p” globală a fost pierdută.

Pentru a evita blocările, utilizați întotdeauna cuvântul cheie var. Apoi toate obiectele vor fi declarate explicit și vor fi create altele noi.

Iată exemplul corectat:

function test() ( var p = 2; alert (p); return p; ) alert(p); // undefined var p = "text important"; alertă(p); // va afișa „text important” test(); // apelează funcția, în acest caz va afișa 2 alert(p); // va afișa „text important”

Acum codul funcționează corect. După cum ați observat, domeniul de aplicare al „p” local este în cadrul funcției de testare, iar cel global este în restul codului.

Câteva cuvinte despre constante

Ca toate celelalte limbaje de programare, JavaScript are constante. Pentru cei care nu știu ce este, o să atașez definiția.

O constantă este un tip de variabilă a cărei valoare rămâne neschimbată.

Conform regulilor de sintaxă în js, numele lor este întotdeauna scris cu litere mici (majuscule). De exemplu,

var MAIN_COLOR = „#fff”

ÎN limbaj de script nu există mijloace tehnice care să facă o constantă cu adevărat o constantă. De fapt, sunt variabile obișnuite care pot fi suprascrise. Cu toate acestea, conform regulilor, dezvoltatorii folosesc aceste elemente cu cu litere mariîn nume ca constante și nu își schimbă sensul în timpul scrierii codului.

Scopul principal al constantelor este de a stoca șiruri de caractere complexe, numere importante sau alte valori în care, atunci când sunt rescrise, este ușor să faci o greșeală de tipar sau să nu fie schimbate niciodată, sau să simplifice codul. De exemplu, constantele pot fi folosite pentru a stoca cereri repetate frecvent pentru

Buna ziua! Astăzi vom vorbi despre domeniul de aplicare al variabilelor (citiți ce este o variabilă). Cert este că atunci când creați o variabilă într-o funcție și numele acesteia se potrivește cu numele unei variabile din afara funcției, atunci pot exista diverse situații interesante legate de domeniul global și local al variabilei.

Exact de asta ne vom ocupa în această lecție.

Variabila globala

Variabilele globale includ toate variabilele pe care le creați în afara funcției. Și cu siguranță trebuie să creați o variabilă folosind cuvântul cheie var; dacă nu faceți acest lucru, variabila va fi vizibilă peste tot în program și, în plus, dacă modul strict este activat, va provoca o eroare. Pentru a activa modul strict, trebuie doar să scrieți linia „utilizați strict” la începutul scriptului. Acest lucru va spune interpretului JavaScript să respecte cu strictețe standardul JavaScript. Iată un exemplu de utilizare a unei variabile globale

Var a =6; //funcția variabilă globală double() ( return alert(a*a); //folosind o variabilă globală ) double();

În exemplu, este declarată o variabilă globală a căreia i se atribuie valoarea 6. În funcție, putem accesa această variabilă și chiar modifica valoarea acesteia, iar această valoare se va schimba peste tot.

Să ne uităm la un exemplu în care valoarea unei variabile globale este modificată într-o funcție, apoi accesăm variabila globală în afara funcției și vedem valoarea care i-a fost setată în funcția însăși.

Var a =6; function double() ( a = 5; //modifică valoarea variabilei globale în funcția return alert(a*a); ) double(a); //apelați funcția document.write(a); //valoarea variabilei globale

După cum puteți vedea din exemplu, dacă modificați valoarea unei variabile globale într-o funcție, aceasta rămâne cu ea peste tot, atât în ​​funcție, cât și în afara acesteia.

Variabila locala.

Când declarați o variabilă într-o funcție, aceasta devine locală și poate fi accesată numai din interiorul funcției. Este de remarcat faptul că instrucțiunile if/else , for, while, do...while nu afectează domeniul de aplicare al variabilelor.

Deci, se dovedește că în cadrul unei funcții puteți accesa o variabilă globală, dar global în afara funcției nu puteți accesa o variabilă locală creată în corpul funcției. Să ne uităm la un exemplu.

Funcția double() ( var a =6; return alert(a*a); ) double(); document.write(a); //încercarea de a accesa o variabilă locală

În exemplu, variabila nu este declarată global, ci mai degrabă declarată în funcție, adică local. Apoi apelăm funcția și încercăm să accesăm variabila locală, dar ca rezultat nu se întâmplă nimic, iar în consolă vedem o eroare că variabila nu este definită.

ȘI ultima varianta atunci se creează atât o variabilă globală, cât și o variabilă locală cu același nume, ce se va întâmpla atunci. Să vedem un exemplu.

Var a =7; function double() ( var a =6; return alert(a*a); ) document.write(a);

După cum puteți vedea, aici este creată o variabilă diferită în funcție, în ciuda faptului că numele acesteia coincide cu cea globală și este variabila locală care va fi disponibilă în funcție; nu o va putea suprascrie pe cea globală. , ceea ce arată acest exemplu.

Ce concluzie se poate trage din toate acestea? Aceasta înseamnă să încercați să utilizați variabile cu nume diferite atât în ​​interiorul cât și în afara funcției. Dar trebuie să știți despre domeniile locale și globale.

Rezultate.

O variabilă creată în afara unei funcții este globală.

Dintr-o funcție puteți accesa o variabilă globală și puteți modifica valoarea acesteia.

Ultima actualizare: 04/05/2018

Toate variabilele din JavaScript au un domeniu specific în care pot acționa.

Variabile globale

Toate variabilele care sunt declarate în afara funcțiilor sunt globale:

var x = 5; fie d = 8; funcția displaySquare())( var z = x * x; console.log(z); )

Aici variabilele x și d sunt globale. Sunt accesibile de oriunde în program.

Dar variabila z nu este globală, deoarece este definită în interiorul funcției.

Variabile locale

O variabilă definită în interiorul unei funcții este locală:

Funcția displaySquare())( var z = 10; console.log(z); fie b = 8; console.log(b); )

Variabilele z și b sunt locale, ele există doar în cadrul funcției. Ele nu pot fi utilizate în afara unei funcții:

Funcția displaySquare())( var z = 10; console.log(z); ) console.log(z); //eroare deoarece z nu este definit

Când o funcție își termină activitatea, toate variabilele definite în funcție sunt distruse.

Ascunderea variabilelor

Ce se întâmplă dacă avem două variabile - una globală și cealaltă locală - care au același nume:

Var z = 89; funcția displaySquare())( var z = 10; console.log(z); // 10 ) displaySquare(); // 10

În acest caz, funcția va folosi variabila z care este definită direct în funcție. Adică variabila locală o va ascunde pe cea globală.

var sau let

Când se utilizează instrucțiunea let, fiecare bloc de cod definește un nou domeniu în care există variabila. De exemplu, putem defini o variabilă la nivel de bloc și la nivel de funcție în același timp:

Fie z = 10; function displayZ())( lat z = 20; ( lat z = 30; console.log("Block:", z); ) console.log("Function:", z); ) displayZ(); console.log("Global:", z);

Aici, în interiorul funcției displayZ, există un bloc de cod definit în care este definită variabila z. Ascunde variabila globală și variabila z definită la nivel de funcție. Într-un program real, un bloc poate reprezenta o funcție imbricată, un bloc de buclă for sau o construcție if. Dar, în orice caz, un astfel de bloc definește un nou domeniu, în afara căruia variabila nu există.

Și în acest caz vom obține următoarea ieșire din consolă:

Bloc: 30 Funcție: 20 Global: 10

Cu operatorul var, nu putem defini o variabilă cu același nume atât într-o funcție, cât și într-un bloc de cod din acea funcție:

Funcția displaySquare())( var z = 20; ( var z = 30; // Eroare! Variabila z este deja definită console.log("Block:", z); ) console.log("Function:", z) ;)

Adică, cu var putem defini o variabilă cu un singur nume fie la nivel de funcție, fie la nivel de bloc de cod.

constante

Tot ceea ce se aplică operatorului let se aplică și operatorului const, care vă permite să definiți constante. Blocurile de cod definesc domeniul de aplicare al constantelor, iar constantele definite pe blocurile de cod imbricate ascund constantele externe cu același nume:

Const z = 10; function displayZ())( const z = 20; ( const z = 30; console.log("Block:", z); // 30 ) console.log("Function:", z); // 20 ) displayZ ( ); console.log("Global:", z); // 10

Variabile nedeclarate

Dacă nu folosim acest cuvânt cheie atunci când definim o variabilă într-o funcție, atunci o astfel de variabilă va fi globală. De exemplu:

Funcția bar())( foo = "25"; ) bar(); console.log(foo); // 25

Chiar dacă variabila foo nu este definită nicăieri în afara funcției bar, ea este totuși disponibilă în afara funcției în context extern.

Ar fi diferit dacă nu numai că am atribui o valoare unei variabile, ci și dacă am defini-o:

Funcția bar())( var foo = "25"; ) bar(); console.log(foo); // eroare

modul strict

Definirea variabilelor globale în funcții poate duce la potențiale erori. Pentru a le evita, utilizați modul strict:

„utilizați strict”; function bar())( foo = "25"; ) bar(); console.log(foo);

În acest caz, vom primi eroarea SyntaxError: Unexpected identifier, care indică faptul că variabila foo nu este definită.

Există două moduri de a seta modul strict:

    adăugați expresia „utilizați strict” la începutul codului JavaScript, apoi modul strict va fi aplicat întregului cod

    adăugați expresia „utilizați strict” la începutul corpului funcției, apoi modul strict va fi aplicat numai acestei funcții

Variabile

Declararea variabilelor

Înainte de a putea folosi o variabilă în JavaScript, aceasta trebuie să fie declarată. Variabilele sunt declarate folosind cuvântul cheie var, după cum urmează:

Var i; var sum;

Folosind cuvântul cheie var o dată, puteți declara mai multe variabile:

Declararea variabilelor poate fi combinată cu inițializarea lor:

Var mesaj = „bună ziua”; var i = 0, j = 0, k = 0;

Dacă valoarea initiala Dacă var nu este specificat în instrucțiune, variabila este declarată, dar valoarea sa inițială rămâne nedefinită până când este modificată de program.

Dacă aveți experiență în utilizarea limbajelor de programare cu tipuri de date statice, cum ar fi C# sau Java, este posibil să observați că declarațiile de variabile din JavaScript nu au o declarație de tip. Variabilele din JavaScript pot stoca valori de orice tip. De exemplu, în JavaScript puteți atribui un număr unei variabile și apoi alocați un șir aceleiași variabile:

Var i = 10; i = „bună ziua”;

Cu instrucțiunea var, puteți declara aceeași variabilă de mai multe ori. Dacă declarația repetată conține un inițializator, atunci acționează ca o instrucțiune obișnuită de atribuire.

Dacă încercați să citiți valoarea unei variabile nedeclarate, JavaScript va genera o eroare. În modul strict furnizat de standardul ECMAScript 5, apare și o eroare atunci când se încearcă atribuirea unei valori unei variabile nedeclarate. Cu toate acestea, din punct de vedere istoric, și atunci când nu este executat în modul strict, dacă atribuiți o valoare unei variabile care nu este declarată cu o instrucțiune var, JavaScript va crea acea variabilă ca proprietate a obiectului global și va acționa la fel ca o variabilă declarată corect. Aceasta înseamnă că variabilele globale nu trebuie declarate. Cu toate acestea, acesta este considerat un obicei prost și poate fi o sursă de erori, așa că încercați întotdeauna să vă declarați variabilele folosind var.

Domeniu variabil

Sfera de aplicare a unei variabile este partea din program pentru care este definită variabila. O variabilă globală are un domeniu de aplicare global - este definită pentru întregul program JavaScript. În același timp, variabilele declarate în interiorul unei funcții sunt definite doar în corpul acesteia. Ele sunt numite locale și au sferă locală. Parametrii funcției sunt, de asemenea, considerați variabile locale, definite numai în corpul acelei funcții.

În cadrul unui corp de funcție, o variabilă locală are prioritate față de o variabilă globală cu același nume. Dacă declarați o variabilă locală sau un parametru de funcție cu același nume ca o variabilă globală, variabila globală va fi de fapt ascunsă:

Var rezultat = "global"; funcția getResult() (var rezultat = "local"; returnează rezultat; ); console.log(getResult()); // Afișează „local”

Când declarați variabile cu domeniu global, instrucțiunea var poate fi omisă, dar când declarați variabile locale, ar trebui să utilizați întotdeauna instrucțiunea var.