Rozsah premennej kódu JavaScript (s príkladmi)

V tomto výučbe sa pomocou príkladov dozviete o variabilnom rozsahu v JavaScripte.

Rozsah sa týka dostupnosti premenných a funkcií v určitých častiach kódu.

V jazyku JavaScript má premenná dva typy rozsahu:

  1. Globálny rozsah
  2. Miestny rozsah pôsobnosti

Globálny rozsah

Premenná deklarovaná v hornej časti programu alebo mimo funkcie sa považuje za premennú globálneho rozsahu.

Pozrime sa na príklad premennej globálneho rozsahu.

 // program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello

Vo vyššie uvedenom programe je premenná a deklarovaná v hornej časti programu a je globálnou premennou. To znamená, že premennú aje možné použiť kdekoľvek v programe.

Hodnotu globálnej premennej je možné vo vnútri funkcie zmeniť. Napríklad,

 // program to show the change in global variable let a = "hello"; function greet() ( a = 3; ) // before the function call console.log(a); //after the function call greet(); console.log(a); // 3

Vo vyššie uvedenom programe je premenná a globálnou premennou. Hodnota a je ahoj. Potom sa k premennej a pristupuje vo vnútri funkcie a hodnota sa zmení na 3.

Preto sa hodnota zmien zmení po zmene vo vnútri funkcie.

Poznámka : Je dobrým zvykom vyhnúť sa používaniu globálnych premenných, pretože hodnota globálnej premennej sa môže v rôznych oblastiach programu meniť. Môže zaviesť do programu neznáme výsledky.

V JavaScripte možno premennú použiť aj bez jej deklarovania. Ak sa použije premenná bez jej deklarovania, táto premenná sa automaticky stane globálnou premennou.

Napríklad,

 function greet() ( a = "hello" ) greet(); console.log(a); // hello

Vo vyššie uvedenom programe je premenná a globálnou premennou.

Ak bola premenná deklarovaná pomocou let a = "hello", program by spôsobil chybu.

Poznámka : V JavaScripte existuje "strict mode";premenná, ktorá nemôže byť použitá bez jej deklarovania. Ak sa chcete dozvedieť viac informácií o prísnych, navštívte JavaScript Prísne.

Miestny rozsah pôsobnosti

Premenná môže mať tiež lokálny rozsah, tj je k nej možné pristupovať iba v rámci funkcie.

Príklad 1: Premenná miestneho rozsahu

 // program showing local scope of a variable let a = "hello"; function greet() ( let b = "World" console.log(a + b); ) greet(); console.log(a + b); // error

Výkon

 helloWorld Uncaught ReferenceError: b nie je definované

Vo vyššie uvedenom programe je premenná a globálnou premennou a premenná b lokálnou premennou. Premenná b je prístupná iba vo vnútri funkcie pozdrav. Preto sa pri pokuse o prístup k premennej b mimo funkcie vyskytne chyba.

nech je Block Scoped

letKľúčové slovo je blok rozsahom (premennú možno pristupovať iba v bezprostrednej bloku).

Príklad 2: Bloková premenná

 // program showing block-scoped concept // global variable let a = 'Hello'; function greet() ( // local variable let b = 'World'; console.log(a + ' ' + b); if (b == 'World') ( // block-scoped variable let c = 'hello'; console.log(a + ' ' + b + ' ' + c); ) // variable x cannot be accessed here console.log(a + ' ' + b + ' ' + c); ) greet();

Výkon

 Hello World Hello World ahoj Uncaught ReferenceError: x nie je definované

Vo vyššie uvedenom programe premenná

  • a je globálna premenná. Je k nim prístup kdekoľvek v programe.
  • b je lokálna premenná. Je k nim prístup iba vo vnútri funkcie greet.
  • c je premenná s blokovaným rozsahom. Je prístupný iba vo vnútri ifbloku príkazov.

Vo vyššie uvedenom programe teda prvé dva console.log()fungujú bez problémov.

Pokúšame sa však získať prístup k blokovanej premennej c mimo bloku v tretej console.log(). To spôsobí chybu.

Poznámka : V JavaScripte varje rozsah funkcie obmedzený na rozsah funkcií let. Ak sa pokúsite použiť var c = 'hello';vo vnútri ifpríkazu vo vyššie uvedenom programe, funguje celý program, pretože s parametrom c sa zaobchádza ako s lokálnou premennou.

Ak sa chcete dozvedieť viac informácií o letverzus var, navštívte JavaScript let vs. var.

Zaujímavé články...