Variabile în JavaScript. Variabilele, domeniile și ridicarea variabilelor în JavaScript Javascript înlocuiesc o variabilă cu valoarea acesteia

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;

Folosit o dată cuvânt cheie var, 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ă nu este specificată nicio valoare inițială în instrucțiunea var, atunci 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.

Programatorul dorește să creeze un film variabil global și o altă variabilă care are același nume, dar care acționează doar în funcția showBadFilm(). Ce mesaj va ieși alerta din funcția showGoodFilm()? Ce mesaj va fi afișat dacă această funcție este apelată din nou, dar după apelarea funcției showBadFilm()?

Film bun sau rău? var film = "Viburnum roșu"; funcția showGoodFilm() (alertă(film + " -

bun film

!"); ) function showBadFilm() ( film = "11 septembrie"; alert(film + " - film prost!"); ) showGoodFilm(); // ce va afișa alerta? showBadFilm(); // ce va afișarea alertei showGoodFilm();

  • Soluţie:

    Observați că funcția showBadFilm() nu are cuvântul cheie var înainte de variabila film. Prin urmare, JavaScript presupune că doriți să înlocuiți valoarea unei variabile globale, mai degrabă decât să creați o variabilă locală cu același nume. Prin urmare, apelarea din nou a funcției showGoodFilm() va afișa: „11 septembrie este un film bun!”

    Verificarea tipului de date

    bun film

    Observați că prima variabilă este declarată cu numele film, iar variabila din alertă este Film. Acestea sunt două variabile diferite, deoarece JavaScript este un limbaj sensibil la majuscule și minuscule. Numele 07_agent începe cu un număr, iar acest lucru va cauza o eroare de sintaxă și, ca urmare, scriptul nu va funcționa.

Variabilele din JavaScript sunt containere pentru stocarea diferitelor informații.

Variabile JavaScript

Variabilele JavaScript sunt „containere” în care puteți încărca diverse informații și le puteți recupera ulterior.

Fiecare variabilă JavaScript trebuie să aibă propriul nume unic, care poate începe cu o literă latină sau simbolul „_”.

Vă rugăm să rețineți: numele variabilelor din JavaScript nu pot începe cu numere.

Vă rugăm să rețineți: deoarece JavaScript este sensibil la majuscule și minuscule, variabilele cu aceleași nume scrise în majuscule diferite (de exemplu, var și VAR) vor fi variabile diferite.

Crearea variabilelor

Crearea de variabile în JavaScript este adesea numită "anunţ" variabile.

Variabilele în JavaScript sunt declarate folosind comanda var.

//Creează o variabilă numită ex1 var ex1; //Creează o variabilă numită ex2 var ex2;

Variabilele create mai sus vor fi goale, adică am creat containere, dar nu am încărcat nicio valoare în ele.

Valorile pot fi încărcate și în containere chiar în momentul creării, ca în exemplul de mai jos:

//Creează o variabilă numită ex1 care conține valoarea 4 var ex1=4; //Creează o variabilă numită ex2 care conține valoarea 5 var ex2=5;

Pentru a extrage o valoare dintr-o variabilă creată anterior, trebuie să vă referiți la numele acesteia.

În exemplul următor, vom extrage conținutul variabilelor și le vom scoate imediat în pagină folosind comanda document.write.

//Scrieți numărul 4 în variabila ex1 var ex1=4; //Scrieți numărul 5 în variabila ex2 var ex2=5; //Trimite conținutul variabilei ex1 în pagina document.write(ex1+"
"); //Afișează conținutul variabilei ex2 document.write(ex2+"
"); //Schimbă conținutul variabilei ex2 ex2=200; //Afișează noul conținut al variabilei ex2 document.write(ex2);

Vizualizare rapidă

Variabile șir

Pe lângă numere, puteți stoca text arbitrar în variabile. Variabilele care stochează text se numesc variabile șir.

Când scrieți text într-o variabilă, asigurați-vă că o includeți între ghilimele duble (") sau ghilimele simple (").

//Scrieți șirul „Salut tuturor!” în variabila ex var ex="Bună ziua tuturor!"; //Trimite valoarea variabilei ex în pagina document.write(ex);

Vizualizare rapidă

Definirea variabilelor cu și fără var

În JavaScript, puteți defini variabile cu sau fără var.

//Creează o nouă variabilă cu var var ex=123; //Creează o nouă variabilă fără var ex2=20;

S-ar putea să credeți că declararea variabilelor cu și fără var va produce întotdeauna același rezultat, dar acest lucru este adevărat numai atunci când declarația are loc într-un context global (adică în afara tuturor funcțiilor).

Dacă declarația are loc într-un context local (adică, în corpul unei funcții), o declarație cu var creează o variabilă locală (adică, o variabilă care va fi disponibilă numai în corpul acestei funcții și va fi distrusă după funcție. este executată), o declarație fără var creează o variabilă globală (adică o variabilă care va fi disponibilă pentru alte funcții dintr-un script dat).

Rețineți că vom vorbi mai multe despre variabilele locale și globale mai târziu în acest tutorial.

Despre ștergerea și redefinirea variabilelor

Prin redefinirea variabilelor nu ștergeți valoarea care este stocată în ele.

Var ex=123; var ex; document.write(ex); // Tipărește 123

Dacă doriți să ștergeți o variabilă în JavaScript și nu a fost declarată cu var, puteți utiliza operatorul de ștergere.

Ex=123; șterge ex;

Operatorul de ștergere nu poate șterge variabilele declarate cu var, deci dacă o variabilă a fost declarată cu var, singura modalitate de a o șterge este să o setați la null sau nedefinit.

Var ex=123; ex=null; // sau ex=nedefinit

Fă-o singur

Sarcina 1. Corectați erorile din codul de mai jos:

Sarcina 1

var 33var=33; document.write(33var); document.write("
"); var str1=Salut tuturor!; document.write(str1); document.write("
"); var vaR = 288; document.write(var); document.write("
");

Sarcina 2. Fișierul extern secred1.js conține variabilele sec1, sec2, sec3 și sec4, care conțin literele cuvântului de cod (nu în ordine). Conectați-vă fișier externși aflați cuvântul de cod prin imprimarea valorilor variabilelor pe pagină.

Acest capitol acoperă gramatica de bază, declarațiile variabilelor, tipurile de date și literalele.

Bazele

JavaScript împrumută o mare parte din sintaxa sa din Java, dar este influențat și de limbaje precum Awk, Perl și Python.

JavaScript face distincție între majuscule și minuscule și utilizează codificarea caracterelor Unicode. De exemplu, cuvântul Früh („devreme” în germană) poate fi folosit ca nume de variabilă.

Var Früh = „foobar”;

Dar, variabila früh nu este aceeași cu Früh, deoarece JavaScript este sensibil la majuscule și minuscule.

Comentarii

Sintaxa comentariului este aceeași ca în C++ și în multe alte limbaje:

// Comentariul ocupând un rând.

/* Un comentariu care se întinde pe mai multe rânduri.

*/ /* Nu puteți imbrica /* un comentariu într-un comentariu */ SyntaxError * / Declarations

Există trei tipuri de declarații în JavaScript:

var Declara o variabilă inițializarea variabilei la o valoare este opțională. let Declara o variabilă locală în domeniul de aplicare a blocului. Inițializarea variabilei la o valoare este opțională. const Declara o constantă numită numai pentru citire. Variabile

Puteți utiliza variabile ca nume simbolice pentru valori în aplicația dvs. Numele de variabile se numesc identificatori și trebuie să respecte anumite reguli.

Un identificator în JavaScript trebuie să înceapă cu o literă, un caracter de subliniere (_) sau un semn dolar ($); caracterele ulterioare pot fi și numere (0-9). Deoarece JavaScript face distincție între majuscule și minuscule, literele includ caracterele de la „A” la „Z” (

majuscule

) și caracterele de la „a” la „z” (minuscule).

  • Puteți utiliza litere ISO 8859-1 sau Unicode în identificatori, cum ar fi å ​​sau ü. De asemenea, puteți utiliza ambele simboluri în identificatori. Câteva exemple de nume valide: Number_hits, temp99, _name. Declararea variabilelor
  • Puteți declara o variabilă în trei moduri:
  • Folosind cuvântul cheie var. De exemplu, var x = 42 .
Această sintaxă

poate fi folosit pentru a declara atât variabile locale, cât și globale. Doar atribuiți o valoare variabilei. De exemplu, x = 42. Variabilele declarate în acest fel sunt globale. O astfel de declarație generează un avertisment strict (mod strict). Nu se recomandă utilizarea acestei metode. Folosind cuvântul cheie let. De exemplu, să fie y = 13 . Această sintaxă poate fi folosită pentru a declara o variabilă locală în domeniul de aplicare al unui bloc.

Atribuirea de valori

Variabilă declarată prin var sau let fără atribuire

valoarea initiala , are valoarea nedefinită .. În exemplul următor, variabilei de intrare nu i se atribuie o valoare, iar declarația if va fi evaluată la adevărat:

var intrare;

if (input === nedefinit) ( doThis( ) ; ) else ( doThat( ) ; )

Valoarea undefined se comportă ca false atunci când este utilizată într-un context boolean. De exemplu, următorul cod execută funcția myFunction deoarece elementul myArray nu este definit:

var myArray = ;

dacă (! myArray[ 0 ] ) ( myFunction( ) ; )

Valoarea nedefinită este convertită în NaN atunci când este utilizată într-un context numeric: var a; a + 2;

// NaN

Dacă matricea este creată folosind un literal într-un script

nivel superior

, apoi JavaScript interpretează tabloul de fiecare dată când evaluează o expresie care conține un literal. În plus, literalul folosit în funcție este creat de fiecare dată când funcția este apelată.

Virgule suplimentare în literalele matrice

Nu este necesar să specificați toate elementele din literalul matricei. Dacă puneți două virgule la rând, elementele lipsă vor avea valoarea undefined . De exemplu:

var fish = [ „Leu” , , „Înger” ] ;

// [„Leul”, nedefinit, „Îngerul”]

Această matrice are 2 elemente cu valori și unul gol (peștele este „Leu”, peștele este nedefinit, iar peștele este „Înger”).

Dacă puneți o virgulă la sfârșitul unei liste de elemente, aceasta va fi ignorată. În exemplul următor, lungimea matricei este 3. Nu există myList . Toate celelalte virgule din listă indică un element nou.

Notă: virgulele suplimentare pot cauza erori în versiunile mai vechi de browsere, așa că este mai bine să evitați utilizarea lor.

var myList = [ "acasă" , , "școală" , ] ; // ["acasă", nedefinit, "școală"]

În exemplul următor, lungimea matricei este de patru, elementele myList și myList sunt nedefinite:

var myList = [ , "acasă" , , "școală" ] ;

// informatii detaliate, citiți Boolean .

Literal întreg

Numerele întregi pot fi scrise în sisteme numerice zecimal, hexazecimal, octal și binar.

  • Un literal întreg zecimal constă dintr-o secvență de cifre fără un zero înainte.
  • Un zero la început într-un literal întreg indică faptul că este scris în sistem de numere octale. Numerele întregi octale constau doar din cifrele 0-7.
  • Caracterele principale 0x (sau 0X) indică faptul că numărul este hexazecimal. Numerele întregi hexazecimale pot consta din cifrele 0-9 și literele a-fși A-F.
  • Caracterele principale 0b (sau 0B) indică faptul că numărul este binar. Numerele binare pot include doar cifrele 0 și 1.

Câteva exemple de literale întregi:

0, 117 și -345 ( sistem zecimal notație) 015, 0001 și -077 ( sistem octal 0x1123, 0x00111 și -0xF1A7 (hexazecimal) 0b11, 0b0011 și -0b11 ( sistem binar notaţie)

Literal de număr în virgulă mobilă

Numerele în virgulă mobilă pot consta din următoarele părți:

  • Un număr întreg zecimal care poate avea un semn (un simbol „+” sau „-” înaintea numărului),
  • Punct zecimal (""),
  • Partea fracționată(un alt număr zecimal),
  • Expozant.

Un exponent este format din caracterul „e” sau „E” urmat de un număr întreg, care poate avea un semn. Un număr cu virgulă mobilă trebuie să fie format din cel puțin o cifră și fie o virgulă zecimală, fie caracterul „e” (sau „E”).

Într-o formă mai condensată, sintaxa arată astfel:

[(+|-)][.cifre][(E|e)[(+|-)]cifre]

3.14 -3.1E+12 -.33333333333333333333 .1e-23

Literal obiect

Un obiect literal este o listă de zero sau mai multe perechi de nume de proprietăți și valorile asociate acestora, cuprinse între acolade (()). Nu ar trebui să utilizați un obiect literal la începutul unei expresii deoarece aceasta va avea ca rezultat o eroare sau un comportament la care nu vă așteptați, deoarece caracterul „(” va fi interpretat ca începutul unui bloc.

Următorul exemplu atribuie șirul „Saturn” proprietății myCar a obiectului mașină, proprietatea getCar rezultatului apelării funcției CarTypes(„Honda”) și proprietatea specială valorii variabilei Sales:

var Sales = "Toyota" ;

function CarTypes(nume) ( if (nume == "Honda" ) ( returneaza numele; ) else ( return "Ne pare rau, nu vindem " + nume + "." ; ) ) var masina = ( myCar: "Saturn" , getCar : CarTypes( "Honda") , special: Vânzări );

consolă. log( car. myCar) ;

// Consola Saturn. log( car. getCar) ;

//Consola Honda. log( car. special) ;

//Toyota

În plus, puteți utiliza literale numerice sau șir în numele proprietăților sau puteți încadra un obiect în altul. De exemplu:

var mașină = ( multeMașini: ( a: „Saab” , „b” : „Jeep” ) , 7 : „Mazda” ) ;

consolă. log( masina. multeMasini. b) ; // Consola Jeep. log( masina[ 7 ] );

//Mazda

Numele proprietății obiectului poate fi orice șir, inclusiv șirul gol. Dacă numele proprietății nu este un identificator JavaScript valid, acesta trebuie inclus între ghilimele. Pentru a face referire la astfel de nume, utilizați paranteze drepte () în loc de punct (.):

var unusualPropertyNames = ( "" : "Un șir gol" , "!" : "Bang!" ) consolă. log(unusualPropertyNames. "" );

Un șir literal este zero sau mai multe caractere cuprinse între ghilimele duble (") sau ghilimele simple ("). Șirul trebuie delimitat de ghilimele de același tip, adică. fie ambele simple, fie ambele duble. De exemplu:

„foo” „bar” „1234” „o linie \n altă linie” „Pisica lui John”

Puteți apela oricare dintre metodele obiectului String pe un literal șir: JavaScript va converti automat literalul șir într-un obiect String temporar, va apela metoda și apoi va distruge obiectul temporar String. De asemenea, puteți utiliza proprietatea String.length cu un literal șir:

Consolă. log( "Pisica lui Ioan" . lungime); // Numărul de caractere din linie, inclusiv spațiul. // În acest caz, lungimea liniei este 10.

Șabloanele de rând sunt disponibile și în ES2015. Modelele de șiruri oferă zahăr sintactic pentru construirea șirurilor. Acest lucru este similar cu capacitățile de interpolare a șirurilor din Perl, Python și altele. În plus, o etichetă poate fi adăugată pentru a permite construcția personalizată a șirurilor, evitând atacurile de injectare și construirea de structuri de date la nivel înalt din conținutul șirului.

// Creare simplă de șiruri prin șir literal `În JavaScript „\n” este un flux de rând.` // Șiruri cu mai multe linii `În JavaScript, acest lucru nu este legal.` // Interpolare șiruri var name = "Bobby", time = „azi”; `Bună, $(nume), cum sunteți $(ora)?` // Construiți un prefix de solicitare HTTP folosit pentru a interpreta înlocuirile și pentru a construi POST`http://foo.org/bar?a=$(a)&b=$ (b) Tip de conținut: application/json X-Credentials: $(acreditări) ( „foo”: $(foo), „bar”: $(bar))`(myOnReadyStateChangeHandler);

Ar trebui să utilizați literale șir, cu excepția cazului în care aveți nevoie în mod specific de un obiect String. Pentru mai multe informații despre obiectul String, citiți String.

Utilizarea caracterelor speciale în șiruri

Pe lângă caracterele obișnuite, puteți include și caractere speciale în șiruri.

„o linie \n altă linie”

Următorul tabel listează caracterele speciale pe care le puteți utiliza.

Personaje specialeîn JavaScript Semnificația simbolului
\b Înapoi (Backspace)
\f Traducere sau flux de pagini (Fed de formulare)
\n Avans de linie ( Linie nouă)
\r Retur cu transportul
\t Tab
\v Filă verticală
\" Apostrof sau ghilimele simple
\" ghilimele duble
\\ Backslash
\XXX

caracter latin-1 reprezentat de trei cifre octale XXX de la 0 la 377. De exemplu, \251 (caracterul ©).

\x XX

Caracter latin-1 reprezentat prin două numere hexazecimale XX de la 00 la FF. De exemplu, \xA9 (simbol ©).

\u XXXX

Un caracter Unicode reprezentat de patru cifre hexazecimale XXXX. De exemplu, \u00A9 (simbol ©).

\u (XXXXX) Personaj în UTF-32BE. De exemplu, \u(2F804) înseamnă același lucru ca notația obișnuită \uD87E\uDC04.
Escape personaje

Pentru caracterele care nu sunt enumerate în tabelul de mai sus, bara oblică inversă este ignorată. Această utilizare este depreciată și ar trebui să o evitați.

Puteți insera un citat într-un șir dacă îl precedați cu o bară oblică inversă. Acest lucru se numește citate de evadare. De exemplu:

var quote = „A citit „Incinerarea lui Sam McGee” de R.W. Service.” ;

consolă. jurnal (citat);

// A citit „Incinerarea lui Sam McGee” de R.W. Serviciu.

Pentru a include o bară oblică inversă într-un șir, trebuie să o precedați cu o altă bară oblică inversă. De exemplu:

var home = "c:\\temp" ;

// c:\temp

De asemenea, puteți scăpa de noua linie. Bara oblică inversă și linia nouă vor fi eliminate din conținutul șirului. De exemplu:

var str = "acest șir \ este rupt \ pe mai multe\ linii." log(str); // acest șir este rupt pe mai multe linii. Deși JavaScript nu acceptă sintaxa „heredoc” (text formatat într-o singură variabilă șir), o puteți emula adăugând o linie nouă și o bară oblică inversă la sfârșitul fiecărei linii: var poem = "Trandafirii sunt roșii, \n\ Violetele sunt albastre. \n\ Sunt schizofrenic, \n\ Și la fel sunt. " Informații suplimentare

Acest capitol se concentrează pe sintaxa de bază pentru declarații și tipuri. Pentru a obține mai multe informații despre

Construcții JavaScript

, citeste:

Următorul capitol acoperă constructele de control și tratarea erorilor. Declarația var declară o variabilă, inițialând-o opțional la o valoare.= Sursa pentru acest exemplu interactiv este stocată într-un depozit GitHub. Dacă doriți să contribui la proiectul de exemple interactive, clonează https://github.com/mdn/interactive-examples și trimite-ne o cerere de extragere., Sintaxă var= varname1 [... [ , valoare1] [= varname2[ valoare2] varnameN [ valoareN]]]

;

varnameN Nume variabilă. Poate fi orice identificator legal. valueN Valoarea inițială a variabilei. Poate fi orice expresie juridică. Valoarea implicită este, care este fie funcția de încadrare, fie, pentru variabilele declarate în afara oricărei funcții, globală. Dacă re-declarați o variabilă JavaScript, aceasta nu își va pierde valoarea.

Atribuirea unei valori unei variabile nedeclarate o creează implicit ca variabilă globală (devine o proprietate a obiectului global) atunci când atribuirea este executată. Diferențele dintre variabilele declarate și nedeclarate sunt:

1. Variabilele declarate sunt constrânse în contextul de execuție în care sunt declarate. Variabilele nedeclarate sunt întotdeauna globale.

Funcția x() ( y = 1; // Aruncă o ReferenceError în modul strict. var z = 2; ) x(); console.log(y); // 1 console.log(z); // Aruncă o ReferenceError: z nu este definit în afara x.

2. Variabilele declarate sunt create înainte ca orice cod să fie executat. Variabilele nedeclarate nu există până când nu este executat codul care le este atribuit.

Console.log(a); // „nedefinit” sau „” în funcție de browser console.log(„încă merge...”); // tot merge... var a = 1; console.log(a); // 1 console.log("încă merge..."); // încă merg...

3. Variabilele declarate sunt o proprietate neconfigurabilă a contextului lor de execuție (funcție sau globală). Variabilele nedeclarate sunt configurabile (de exemplu, pot fi șterse).

Var a = 1; b = 2; sterge aceasta.a; // Afișează o TypeError în modul strict. Eșuează în tăcere altfel. sterge aceasta.b; console.log(a, b); // Afișează o ReferenceError. // Proprietatea „b” a fost ștearsă și nu mai există.

Din cauza acestor trei diferențe, nedeclararea variabilelor va duce foarte probabil la rezultate neașteptate. Astfel, este recomandat să declarați întotdeauna variabilele, indiferent dacă acestea se află într-o funcție sau în domeniul global.

Și în modul strict ECMAScript 5, atribuirea unei variabile nedeclarate aruncă o eroare.

var ridicare

Deoarece declarațiile de variabile (și declarațiile în general) sunt procesate înainte ca orice cod să fie executat, declararea unei variabile oriunde în cod este echivalentă cu declararea acesteia în partea de sus. Aceasta înseamnă, de asemenea, că o variabilă poate părea a fi utilizată înainte de a fi declarată. Acest comportament se numește „histing”, deoarece se pare că declarația variabilei este mutată în partea de sus a funcției sau a codului global.

Bla = 2; var bla; // ...se înțelege implicit ca: var bla; bla = 2;

Este important de subliniat că ridicarea va afecta declarația variabilei, dar nu și inițializarea valorii acesteia. Valoarea va fi într-adevăr atribuită atunci când se ajunge la instrucțiunea de atribuire:

Funcția do_something() ( console.log(bar); // undefined var bar = 111; console.log(bar); // 111 ) // ...este înțeleasă implicit ca: funcția do_something() ( var bar; console .log(bara); // bara nedefinita = 111;

Exemple Declararea și inițializarea a două variabile var a = 0, b = 0; Atribuirea a două variabile cu un singur șir de caractere var a = "A"; var b = a; // ...este echivalent cu: var a, b = a = "A";

Fii atent la ordine:

Var x = y, y = "A"; console.log(x + y); //nedefinitA

Aici, x și y sunt declarate înainte de executarea oricărui cod, dar atribuirile apar mai târziu. În momentul în care „x = y” este evaluat, y există, astfel încât nu se afișează ReferenceError și valoarea sa este nedefinită. Deci, lui x i se atribuie valoarea nedefinită. Apoi, lui y i se atribuie valoarea „A" . Consequently, after the first line, x === undefined && y === "A" , hence the result.!}

Inițializarea mai multor variabile var x = 0; funcția f() ( var x = y = 1; // Declara x local; declară y global. ) f(); console.log(x, y); // 0 1 // În modul non-strict: // x este cel global așa cum era de așteptat; // y este scurs în afara funcției, totuși!

Același exemplu ca mai sus, dar cu un mod strict:

„utilizați strict”; var x = 0; funcția f() ( var x = y = 1; // Aruncă o ReferenceError în modul strict. ) f(); console.log(x, y);

Globale implicite și domeniul de aplicare al funcției externe

Variabilele care par a fi globale implicite pot fi referințe la variabile dintr-un domeniu de activitate extern:

Var x = 0; // Declara x în domeniul de aplicare al fișierului, apoi îi atribuie o valoare de 0. console.log(typeof z); // „nedefinit”, deoarece z încă nu există funcția a() ( var y = 2; // Declara y în sfera funcției a, apoi îi atribuie o valoare de 2. console.log(x, y); // 0 2 funcția b() ( x = 3; // Atribuie 3 fișierului existent cu domeniul x. y = 4; // Atribuie 4 exterioară y. z = 5; // creează o nouă variabilă globală z și îi atribuie o valoare de 5. // (Aruncă o ReferenceError în modul strict.) b(); . console.log(x, z);

Specificații Comentariu privind starea specificațiilor
ECMAScript prima ediție (ECMA-262) Standard Definiție inițială. Implementat în JavaScript 1.0
ECMAScript 5.1 (ECMA-262)
Definiția „instrucțiunii var” din specificația respectivă.
Standard
ECMAScript 2015 (ediția a 6-a, ECMA-262)
Standard
Ultima versiune ECMAScript (ECMA-262)
Definiția „enunțului variabil” din specificația respectivă.
Proiect
Compatibilitate browser

Tabelul de compatibilitate de pe această pagină este generat din date structurate. Dacă doriți să contribuiți la date, vă rugăm să consultați https://github.com/mdn/browser-compat-data și să ne trimiteți o cerere de extragere.

Actualizați datele de compatibilitate pe GitHub

Desktop Mobile Server Chrome Edge Firefox Internet Explorer Opera Safari Vizualizare web Android Chrome pentru Android Firefox pentru Android Opera pentru Android Safari pe iOS Samsung Internet Node.jsvar
Suport complet Chrome 1Edge Suport complet 12Suport complet pentru Firefox 1IE suport complet 3Opera Suport complet DaSafari Suport complet DaWebView Android Suport complet 1Chrome Android Suport complet 18Firefox Android Suport complet 4Opera Android Suport complet DaSafari iOS Suport complet DaSamsung Internet Android Suport complet 1.0nodejs Suport complet Da