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:
- Globální rozsah
- 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 a
lze 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
let
Klíč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ř
if
bloku 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 var
je rozsah funkce omezen na let
blokování. Pokud se pokusíte použít var c = 'hello';
uvnitř if
pří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 let
versus var
, navštivte JavaScript let vs var.