V JavaScripte existujú tri rozsahy: globálny, rozsah funkcií a rozsah blokov. Variabilný rozsah- toto je oblasť zdrojový kód program, v ktorom sú premenné a funkcie viditeľné a dajú sa použiť. Globálny rozsah sa tiež nazýva kód najvyššej úrovne.

Globálne premenné

Premenná deklarovaná mimo funkcie alebo bloku sa nazýva globálna premenná. Globálna premenná je dostupná kdekoľvek v zdrojovom kóde:

varnum = 5; funkcia foo() ( console.log(num); ) foo(); // 5 console.log(num); // 5 ( console. log(num); // 5 )

Lokálne premenné

Premenná deklarovaná v rámci funkcie sa nazýva lokálna premenná. Lokálna premenná je dostupná kdekoľvek v tele funkcie, v ktorej bola deklarovaná. Lokálna premenná sa vytvorí vždy, keď sa zavolá nová funkcia a zničí sa, keď sa ukončí (keď sa funkcia skončí):

Funkcia foo() ( var num = 5; console.log(num); ) foo(); // 5 console.log(typeof num); // nedefinované

Lokálna premenná má prednosť pred globálnou premennou s rovnakým názvom, čo znamená, že lokálna premenná sa použije vo funkcii a nie globálna:

var x = "globálne"; // Funkcia globálnej premennej checkscope() ( var x = "local"; // Lokálna premenná s rovnakým názvom ako globálna document.write(x); // Používa sa lokálna premenná, nie globálna ) checkscope(); // => "local" Skúste »

Blokové premenné

Premenná deklarovaná vo vnútri bloku s kľúčové slovo nech sa nazýva blok . Bloková premenná je dostupná kdekoľvek v bloku, v ktorom bola deklarovaná:

letnum = 0; ( nech num = 5; console.log(num); // 5 ( nech num = 10; console.log(num); // 10 ) console.log(num); // 5 ) console.log(num) ; // 0

Opätovné oznámenie

Ak znova deklarujete premennú s rovnakým názvom (v rovnakom rozsahu) pomocou kľúčového slova var, nič sa nestane:

Vara = 10; var a; denník konzoly(a); // desať

Ak po opätovnej deklarácii nasleduje inicializácia, potom takáto inštrukcia funguje ako normálne priradenie novej hodnoty:

Vara = 10; var a = 5; // Rovnaké ako a = 5; denník konzoly(a); // 5

Ak znova deklarujete premennú s rovnakým názvom (v rovnakom rozsahu) pomocou kľúčového slova let, zobrazí sa chyba:

Vara = 10; nech a; // Chyba.

Reťazec rozsahov

Zvážte nasledujúci príklad:

varnum = 5; function foo() ( var num2 = 10; function bar() ( var num3 = 15; ) )

V tomto kóde sú tri rozsahy: globálny rozsah, rozsah funkcie foo() a rozsah funkcie bar(). Premenná num a funkcia foo() sú definované v globálnom rozsahu. Premenná num2 a funkcia bar() sú definované v rozsahu funkcie foo() a je v nej dostupná aj premenná num z globálneho rozsahu. Rozsah funkcie bar() obsahuje jednu premennú num3 , ktorá je dostupná iba vo funkcii bar(). V rozsahu funkcie bar() sú prístupné aj premenné z ďalších dvoch rozsahov, pretože sú jej rodičmi. Reťazec rozsahu pre tento príklad je znázornený na obrázku nižšie:

Na obrázku sú zobrazené rôzne rozsahy s obdĺžnikmi rôznych farieb. Vnútorný rozsah v reťazci rozsahov má prístup ku všetkému z vonkajších rozsahov, ale vonkajšie rozsahy nemajú prístup k ničomu z vnútorných rozsahov.

Reťaz ďalekohľadu je objednaná. Tlmočník hľadá v reťazci rozsahu identifikátory smerom von, nie dovnútra. To znamená, že vyhľadávanie názvu začína v rozsahu, v ktorom sa pristupovalo k identifikátoru. Ak sa nájde názov identifikátora, vyhľadávanie sa ukončí. Ak meno nemožno nájsť v aktuálnom rozsahu, vyhľadávanie sa vykoná v ďalšom (vonkajšom) rozsahu atď.. Použije sa teda identifikátor z rozsahu, v ktorom sa našiel. Ak sa identifikátor nenájde v žiadnom z rozsahov, JavaScript vygeneruje chybu:

var str = "globálne"; varnum = 5; function foo() ( var str = "local"; // Použiť lokálnu premennú str num = 10; // Použiť globálnu premennú num // alert(x); // Chyba. Premenná x nie je v žiadnom rozsahu ) foo( ) ; alert(str); // "global" alert(num); // desať

Ak v tele funkcie priradíte hodnotu nedeklarovanej premennej, potom sa v čase volania funkcie, ak v globálnom rozsahu nenachádza žiadna premenná s rovnakým názvom, vytvorí nová globálna premenná:

Funkcia foo() ( num = 2; ) foo(); // Vytvorila sa nová globálna premenná num alert(num); // 2

Zdvihnite reklamy

V JavaScripte sú deklarované premenné dostupné kdekoľvek vzhľadom na ich rozsah, čo znamená, že premenné sú viditeľné ešte predtým, ako sú deklarované v kóde. Táto funkcia JavaScriptu sa neformálne nazýva zdvíhanie: programovací kód sa správa tak, ako keby boli deklarácie premenných implicitne zdvihnuté (bez inicializácie) na úplný vrchol svojho rozsahu.

Zvážte nasledujúci útržok kódu:

var str = "globálne"; function foo() ( alert(str); // nedefinované var str = "local"; alert(str); // "local" ) foo();

Pri pohľade na kód by sme si mohli myslieť, že prvé upozornenie by malo vypísať reťazec „global“, pretože deklarácia lokálnej premennej str ešte nebola vykonaná. Skutočný výstup však nie je definovaný. Vďaka zdvíhaniu deklarácií je funkcia uvedená vyššie ekvivalentná s implementáciou nižšie, v ktorej je deklarácia premennej zdvihnutá na začiatok funkcie:

Funkcia foo() ( var str; // Deklarácia lokálnej premennej na začiatku funkcie alert(str); // Tu je dostupná, ale neinicializovaná str = "local"; // Tu je inicializovaná výstraha( str); // A tu má očakávanú hodnotu - "local")

To isté platí pre globálny rozsah, premenná deklarovaná v dolnej časti je dostupná v hornej časti:

Alert(num); // nedefinované var num = 10; alert(num); // desať

Čo sú to globálne premenné: premenné sú „viditeľné“ v ktoromkoľvek bode vykonávania programu, kdekoľvek ich možno čítať a prepisovať.
Globálne premenné sú zvyčajne definované na úplnom začiatku programu, mimo akýchkoľvek blokov (())
v prípade Js sa nastavujú za skriptom, prípadne všetkými funkciami

ahoj = ahoj ; //nastavíme globálnu premennú a skontrolujeme ju
dokument. writeln (->1 + ahoj + každý jeden
); //->1 Zdravím všetkých

Ak pravda)
//ak (false)
{
var hello = Ahoj Dolly a ; //toto je tiež globálne
svet = svet; //globálne
var cont = , pokračujeme //globálne
dokument. writeln (->1.2 + ahoj + svet + pokr. +
);
//1.2 Ahoj Dolly a svet, pokračujeme
}
dokument. writeln (->2 + ahoj + svet + pokr. +
);
//->2 Ahoj Dolly a svet, pokračujeme


ak je to pravda, dostaneme odpoveď

->1 Zdravím všetkých
->1.2 Ahoj Dolly a svet, pokračujeme
->2 Ahoj Dolly a svet, pokračujeme


exekučné prestávky

Ukazuje sa teda, že použitie var žiadnym spôsobom neovplyvňuje globálny rozsah. Premenná uvedená v skripte mimo procedúr sa považuje za globálnu, aj keď je v zátvorkách () okolo if while pre blokové a iné rozsahy zostanú globálne aj vo vnútri slučiek

Závery, stručne

  • pre premenné používané v globálnom rozsahu nie je dôležitá prítomnosť var.
  • Bloky po if while for nevytvárajú miestny rozsah (ako to robia v iných jazykoch)
miestne premenné – premenné nastavené vo vnútri spustiteľného bloku (funkcie) a neovplyvňujú ostatné funkcie. a vonkajšie prostredie, t.j. globálnej oblasti.

chlapec = Ján;
urobil = zabije Kennyho; //takže máme 2 globálne premenné
funkcia doit()
{
//print už prešiel --1 a zmeníme údaje a zmeníme údaje
var chlapec = Gary ; // vytvorenie miestneho nastavenia
urobil = pomôcť Annie; // zmeniť globálne
;
dokument. writeln (--2 + chlapec + + urobil +
);
//--2 Gary pomáha Annie
;
//teraz vo funkcii nastavíme lokálne a globálne premenné
var dobrý = bol dobrý chlapec
; //miestne nastavenie!
zlý = má rád zlé dievčatá
; //globálne
}
;
dokument. writeln(--1+chlapec++did+
);
//--1 Jhone zabije Kennyho
urob to();
//--2 Gary pomáha Annie
dokument. writeln (--3 + chlapec + + urobil +
);
//--3 Jhone pomáha Annie
;
Ak pravda)
//ak(!false)
{
dokument. writeln (--4 + dobre );
//vykonanie tohto bloku vyvolá chybu.
//teraz sme mimo miestneho rozsahu
// funkcie doit(), takže pre nás je to dané cez var
//premenné dobro jednoducho neexistuje
}
dokument. writeln (--5 + zle );
//--5 má rád zlé dievčatá


výsledok:

1 Jhone zabije Kennyho
--2 Gary pomáha Annie
--3 Jhone pomáha Annie
--5 má rád zlé dievčatá


Záver

lokálne premenné v javascripte

  • var funguje vo funkcii deklarovaním lokálnej premennej. Toto je jeho hlavná úloha.
Odporúčania a poznámky
  • Javascript sa od C veľmi líši už v tom, že vo funkcii sú možné iba (?) lokálne premenné.
  • použitie var alebo nepoužívanie v globálnom rozsahu závisí len od vášho osobná skúsenosť. Ale pre mňa je lepšie nebyť lenivý. v perle sa to nazýva use strict
>>> pre premenné používané v globálnom rozsahu nie je prítomnosť varu dôležitá

Dôležité. Po prvé, premenné sa nedajú vymazať (pomocou delete). Po druhé, ich inštancia prebieha na „nulovom riadku“ (pred prácou „riadok po riadku“), kde sa im okamžite priradí nedefinovaná hodnota a až potom môže (ale nemusí) premenná dostať novú hodnotu:

var glb_1 = 1;
if (false) (var glb_2 = 2; glb_3 = 3;)

alert(glb_1) // vytvorí sa inštancia a nastaví sa na 1
alert(glb_2) // vytvorená inštancia a nastavená na 'undefined'
alert(glb_3) // vôbec nejde o premennú (žiadna var), chyba volania

Dobrý deň, fanúšikovia JavaScriptu a moji verní odberatelia. V dnešnej publikácii vám podrobne poviem, ako na to JavaScript globals premenných a miestnych obyvateľov. Určite uvediem definície dôležitých pojmov, porozprávam o vlastnostiach deklarovania a inicializácie premenných, popíšem, čo je rozsah a ako v ňom fungujú vytvorené prvky.

To všetko platí pre tie najzákladnejšie, základné znalosti jazyka. Bez toho, aby ste toto všetko pochopili, sa nebudete môcť posunúť ďalej a rozvíjať svoje programátorské schopnosti v js. Kľúčové pojmy sa vám navyše budú hodiť nielen v tejto špecializácii, ale aj všeobecne v IT oblasti. Nuž, začnime!

Čo je to premenná a ako sa vytvára?

Premenná je taký prvok programovacieho jazyka, pod ktorým je pridelená pamäťová oblasť a v ktorej sú uložené určité hodnoty.

Premenné môžu byť veľké množstvo a všetky musia mať jedinečný názov.

Existujú dva druhy premenných: globálne a lokálne. Ich rozdiel spočíva len v inú oblasť viditeľnosť premenných. Globálne prvky sú teda viditeľné v celom kóde a lokálne prvky sú viditeľné iba v malej oblasti, kde boli deklarované.

Mimochodom, snažte sa od prvého dňa, od prvého kódu, pomenovať prvky logickými a zrozumiteľnými názvami. Pretože ďalej, keď pracujete s ťažkými programami, po určitom čase si nebudete pamätať, čo znamená napríklad „aa1“ alebo „perem3“.

A názov nedáva absolútne žiadny zmysel! Stále je tu polovica problémov, koniec koncov, nie je také ťažké porozumieť vašim spisom. A čo urobíte, ak dostanete za úlohu dokončiť úlohy v inom programe, o ktorom ste doteraz ani nepočuli? S takýmito menami, parsovanie implementácia softvéru zabíja veľa dobrého času.

Prečítal som si zápis, teraz sa vráťme k deklarácii premenných.

Ak chcete vytvoriť premennú, musíte najprv napísať kľúčové slovo var, za ktorým nasleduje samotný názov. Takto to vyzerá:

var text = "Dobrý deň, používateľ!"

Potom sa k textu pristupuje bez "var":

text = "nový text."

V tomto prípade sa hodnota prepíše.

Pre lepšie pochopenie zvážte príklad, ktorý vytvára jednu premennú. Budeme sa odvolávať na jeho hodnotu pred a po prepísaní.

1 2 3 4 var text = "Dobrý deň, používateľ!"; upozornenie(text); // vypíše "Ahoj, užívateľ!" text="Nový text!"; upozornenie(text); // vypíše "Nový text!"

var text = "Dobrý deň, používateľ!"; upozornenie(text); // vypíše "Ahoj, užívateľ!" text="Nový text!"; upozornenie(text); // vypíše "Nový text!"

Vlastnosti globálnych objektov

Všetky vytvorené objekty v kóde js sú rozdelené na globálne a lokálne. Vyššie som vysvetlil, aký je medzi nimi rozdiel. Teraz sa pozrime bližšie na globálne objekty.

Sú to všetko funkcie a premenné, ktoré sú deklarované v hlavnom plátne kódu, t.j. nie vo vnútri niektorých funkcií. Všetky v js sa automaticky stávajú vlastnosťami globálneho objektu, ktorý je explicitne dostupný v prehliadačoch pod oknom slova. Zvážte príklad.

cena var = 145; // vytvorenie globálnej premennej

upozornenie(okno.cena); // odpoveď: 145

Zatiaľ je všetko jednoduché, no pripravte sa na nástrahy. Niekedy, keď nepoznáte zvláštnosti ukladania a prepisovania hodnôt premenných, môžete prepísať veľmi dôležité parametre. Takéto chyby je dosť ťažké vystopovať a pomocou kompilátorov ich nájsť nemožno. Preto pozorne analyzujte nasledujúci materiál.

Úskalia a rozsah

Pre lepšie pochopenie problému najprv ukážem malý program, kde vo funkcii vytvorím lokálnu premennú a po mimo jej hraníc - globálnu.

test funkcie() ( p = 2; return p; ) alert(p); // nedefinované p = "dôležitý text"; upozornenie(p); // vypíše "dôležitý text" test(); // vyvolanie funkcie alert(p); // vytlačí 2

Najprv som v testovacej funkcii inicializoval lokálnu premennú s hodnotou 2 a potom som vytvoril globálnu textovú premennú, ktorá ukladá niektoré dôležité údaje.

A tu sa objaví „podvodný blok“.

Jednak vďaka tomu, že som použil vytváranie prvkov podľa pravidiel zastaraného JavaScriptového štandardu, všetky “p” premenné boli vytvorené až v čase priradenia (pri použití direktívy var sa premenné vytvárajú okamžite s hodnotou nedefinované a počas inicializácie cez „= » sa hodnota prepíše).

Po druhé, v tomto prípade js používa existujúcu alebo vytvára novú globálnu premennú na priradenie hodnoty implicitne vytvoreným prvkom. Preto vo vyššie uvedenom príklade po zavolaní testovacej funkcie došlo k prepísaniu hodnoty globálneho „p“.

Vždy používajte kľúčové slovo var, aby ste sa vyhli zlyhaniu. Potom budú všetky objekty explicitne deklarované a budú vytvorené nové.

Tu je opravený príklad:

test funkcie () ( var p = 2; výstraha (p); návrat p; ) výstraha (p); // nedefinované var p = "dôležitý text"; upozornenie(p); // vypíše "dôležitý text" test(); // zavolá funkciu, v tomto prípade vypíše 2 alert(p); // vytlačiť "dôležitý text"

Teraz kód funguje správne. Ako vidíte, rozsah lokálneho „p“ je v rámci testovacej funkcie, zatiaľ čo rozsah globálneho je vo zvyšku kódu.

Pár slov o konštantách

Ako všetky ostatné programovacie jazyky, aj JavaScript má konštanty. Pre tých, ktorí nevedia, čo to je, prikladám definíciu.

Konštanta je typ premennej, ktorej hodnota sa nemení.

Podľa pravidiel syntaxe v js sa ich názov vždy píše malými (veľkými) písmenami. Napríklad,

var MAIN_COLOR = "#fff"

Nie v skriptovacom jazyku technické prostriedky, čím by sa konštanta stala skutočne konštantnou. V skutočnosti sú to obyčajné premenné, ktoré sa dajú prepísať. Podľa pravidiel však vývojári tieto prvky používajú s veľké písmená v názve ako konštanty a v priebehu písania kódu nemenia ich hodnotu.

Hlavným účelom konštánt je ukladanie zložitých reťazcov, dôležitých čísel alebo iných hodnôt, v ktorých pri prepisovaní je ľahké urobiť preklep alebo by sa v žiadnom prípade nemalo meniť, alebo zjednodušiť kód. Napríklad konštanty môžu ukladať často sa opakujúce požiadavky na

Premenné slúžia ako „kontajnery“ na ukladanie informácií.

Pamätáte si školskú algebru?

Pamätáte si školskú algebru? x=5, y=6, z=x+y

Pamätáte si, že písmeno (napríklad x) by sa dalo použiť na uloženie hodnoty (napríklad 5) a že by ste mohli použiť vyššie uvedené informácie na výpočet, že hodnota z je 11?

Tieto písmená sú tzv premenných a premenné možno použiť na uloženie hodnôt (x=5) alebo výrazov (z=x+y).

JavaScript premenné

Rovnako ako v algebre sa premenné JavaScriptu používajú na ukladanie hodnôt alebo výrazov.

Premenná môže mať krátky názov, napríklad x, alebo popisnejší názov, napríklad carname (názov auta).

Pravidlá pre názvy premenných JavaScript:

  • V názvoch premenných sa rozlišujú malé a veľké písmená (y a Y sú dve rôzne premenné)
  • Názvy premenných musia začínať písmenom alebo podčiarkovníkom

komentár: Keďže JavaScript rozlišuje veľké a malé písmená, v názvoch premenných sa rozlišujú aj malé a veľké písmená.

Príklad

Hodnota premennej sa môže počas vykonávania skriptu meniť. Ak chcete zobraziť alebo zmeniť jej hodnotu, môžete na premennú odkazovať jej názvom.

Deklarovanie (vytváranie) premenných JavaScriptu

Vytváranie premenných v JavaScripte sa častejšie označuje ako „deklarovanie“ premenných.

Premenné JavaScriptu deklarujete pomocou kľúčového slova var:

Po vykonaní vyššie uvedených návrhov sa premenná X bude obsahovať hodnotu 5 , a názov auta bude obsahovať hodnotu Mercedes.

komentár: Keď priradíte textová hodnota premenná, uzavrite ju do úvodzoviek.

komentár: Ak premennú znova deklarujete, nestratí svoju hodnotu.

Miestne premenné JavaScriptu

Premenná deklarovaná vo vnútri JavaScript funkcie sa stáva MIESTNE a bude k dispozícii iba v rámci tejto funkcie. (premenná má lokálny rozsah).

Lokálne premenné s rovnakým názvom môžete deklarovať v rôznych funkciách, pretože lokálne premenné sú rozpoznané vo funkcii, v ktorej sú deklarované.

Lokálne premenné sa pri ukončení funkcie zničia.

Viac o funkciách sa dozviete v neskorších lekciách JavaScriptu.

Globálne premenné JavaScriptu

Premenné deklarované mimo funkcie sa stanú GLOBAL a všetky skripty a funkcie na stránke k nim majú prístup.

Globálne premenné sa po zatvorení stránky zničia.

Ak deklarujete premennú bez použitia "var", premenná sa vždy stane GLOBAL.

Priradenie hodnôt k nedeklarovaným premenným JavaScriptu

Ak priradíte hodnoty premenným, ktoré ešte neboli deklarované, premenné budú automaticky deklarované ako globálne premenné.

Tieto návrhy:

Viac o operátoroch sa dozviete v ďalšej lekcii JavaScriptu.

Premenné a konštanty v JavaScripte. Deklarovanie premenných a priraďovanie hodnôt k nim. Premenné globálne a lokálne. Použitie konštánt.

Deklarovanie premenných v JavaScripte

Názvy premenných v JavaScripte môžu pozostávať z písmen, číslic, znaku $ a znaku _ a názov premennej nemôže začínať číslom. Majte na pamäti, že JavaScript rozlišuje veľké a malé písmená a a1 a A1 sú rôzne premenné. Cyrilika sa neodporúča, aj keď je to možné.
Premenné v JavaScripte sú deklarované pomocou kľúčového slova var:

Var Peremennaya_1 var Peremennaya_2

Používanie premenných v JavaScripte bez deklarácie sa neodporúča. Je to možné, ale môže to viesť k chybám.

Priradenie hodnoty premenným

Priradenie hodnoty deklarovaným premenným v JavaScripte:

Peremennaya_1 = 25 Peremennaya_2 = "Priradený text je uzavretý v rovných úvodzovkách"

Hodnotu môžete premenným priradiť hneď po deklarácii:

Var Peremennaya_1 = 25 var Peremennaya_2 = "Priradený text uzatvárame do rovných úvodzoviek"

Hodnota premennej v JavaScripte sa môže počas vykonávania programu meniť. Pri písaní textu do premennej musí byť táto vložená do rovných úvodzoviek.

Lokálne a globálne premenné

Ak je premenná deklarovaná v rámci funkcie, potom je miestne a budú dostupné (budú viditeľné) iba v rámci tejto funkcie. Keď sa funkcia ukončí, lokálne premenné v JavaScripte sa zničia, takže premenné s rovnakým názvom môžete použiť v rôznych funkciách.

Ak je premenná deklarovaná mimo funkcií, potom je globálne a budú dostupné (budú viditeľné) vo všetkých funkciách na stránke. Pri zatvorení stránky sa v JavaScripte zničia globálne premenné.

Konštanty v JavaScripte

Konštanty sú navrhnuté tak, aby uľahčili prácu s kódom, keď musíte používať opakované hodnoty alebo výrazy. Stačí raz nastaviť hodnotu pre konštantu a môžete ju použiť, ako chcete, vložením do kódu vašich programov. JavaScript nemá kľúčové slovo na deklarovanie konštánt, namiesto konštánt sa používajú bežné premenné. Na odlíšenie konštánt od premenných je zvyčajné ich označovať veľkými písmenami, v prípade potreby pomocou podčiarknutia:

Var DRUG_CHELOVEKA = "Pes"

Uvedený príklad konštanty nie je celkom úplný, pretože slovo „Pes“ je už ľahko zapamätateľné a vložené tam, kde je to potrebné. Konštanty v JavaScripte môžete použiť na písanie a vkladanie zložitejších hodnôt, ako sú ťažko zapamätateľné kódy, znakové sady, dlhý text, webové adresy, adresy Email, telefónne čísla, rôzne koeficienty.

V JavaScripte môžu byť konštanty prepísané ako premenné, ale ak to urobíte, význam konštánt sa stratí.