Rozsah proměnné JavaScriptu (s příklady)

V tomto kurzu se na příkladech dozvíte o proměnném rozsahu v JavaScriptu.

Rozsah odkazuje na dostupnost proměnných a funkcí v určitých částech kódu.

V JavaScriptu má proměnná dva typy oboru:

  1. Globální rozsah
  2. Místní rozsah

Globální rozsah

Proměnná deklarovaná v horní části programu nebo mimo funkci je považována za proměnnou globálního rozsahu.

Podívejme se na příklad proměnné globálního rozsahu.

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

Ve výše uvedeném programu je proměnná a deklarována v horní části programu a je globální proměnnou. To znamená, že proměnnou alze použít kdekoli v programu.

Hodnotu globální proměnné lze změnit uvnitř funkce. Napří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

Ve výše uvedeném programu je proměnná a globální proměnná. Hodnota a je ahoj. Pak je proměnná a přístupná uvnitř funkce a hodnota se změní na 3.

Proto se hodnota změny změní po změně uvnitř funkce.

Poznámka : Je dobrým zvykem nepoužívat globální proměnné, protože hodnota globální proměnné se může v různých oblastech programu měnit. Může zavést neznámé výsledky do programu.

V JavaScriptu lze použít i proměnnou, aniž byste ji deklarovali. Pokud se použije proměnná, aniž by se deklarovala, tato proměnná se automaticky stane globální proměnnou.

Například,

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

Ve výše uvedeném programu je proměnná a globální proměnná.

Pokud byla proměnná deklarována pomocí let a = "hello", program by způsobil chybu.

Poznámka : V JavaScriptu "strict mode";nelze použít proměnnou bez jejího deklarace. Chcete-li se dozvědět více o strictu, navštivte JavaScript Strict.

Místní rozsah

Proměnná může mít také místní rozsah, tj. Lze k ní přistupovat pouze v rámci funkce.

Příklad 1: Proměnná místního 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ýstup

 helloWorld Uncaught ReferenceError: b není definováno

Ve výše uvedeném programu je proměnná a globální proměnná a proměnná b je lokální proměnná. Proměnná b je přístupná pouze uvnitř funkce pozdrav. Když se tedy pokusíme získat přístup k proměnné b mimo funkci, dojde k chybě.

pojďme Block Scoped

letKlíčové slovo je blok rozsahem (proměnnou lze přistupovat pouze v bezprostřední bloku).

Příklad 2: Proměnná s blokovým rozsahem

 // 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ýstup

 Hello World Hello World ahoj Uncaught ReferenceError: x není definováno

Ve výše uvedeném programu proměnná

  • a je globální proměnná. Lze k němu přistupovat kdekoli v programu.
  • b je lokální proměnná. Je přístupný pouze uvnitř funkce greet.
  • c je proměnná s blokovým rozsahem. Je přístupný pouze uvnitř ifbloku výpisu.

Proto ve výše uvedeném programu console.log()fungují první dva bez problémů.

Pokoušíme se však získat přístup k blokové proměnné c mimo blok ve třetím console.log(). To způsobí chybu.

Poznámka : V JavaScriptu varje rozsah funkce omezen na letblokování. Pokud se pokusíte použít var c = 'hello';uvnitř ifpříkazu ve výše uvedeném programu, funguje celý program, protože c je považováno za místní proměnnou.

Chcete-li se dozvědět více o letversus var, navštivte JavaScript let vs var.

Zajímavé články...