Scope označuje dostupnost proměnných a funkcí v určitých částech kódu.
V Javascriptu, proměnná má dva typy rozsah:
- Globální Působnosti
- Místní Působnosti
Globální Rozsah
proměnné deklarované v horní části programu nebo mimo funkci, je považován za globální rozsah proměnné.
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.
hodnota globální proměnné může být změněna uvnitř funkce. Například
// program to show the change in global variablelet a = "hello";function greet() { a = 3;}// before the function callconsole.log(a);//after the function callgreet();console.log(a); // 3
ve výše uvedeném programu je proměnná a globální proměnná. Hodnota a je dobrý den. Poté je proměnná a přístupná uvnitř funkce a hodnota se změní na 3.
proto se hodnota a změní po změně uvnitř funkce.
Poznámka: Je dobrým zvykem vyhnout se používání globálních proměnných, protože hodnota globální proměnné se může měnit v různých oblastech programu. To může zavést neznámé výsledky v programu.
v JavaScriptu lze proměnnou použít i bez deklarace. Pokud je proměnná použita bez deklarace, tato proměnná se automaticky stává 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ěnnou.
Pokud byla proměnná deklarována pomocí let a = "hello"
, program by hodil chybu.
Poznámka: V JavaScriptu je "strict mode";
, ve kterém proměnnou nelze použít bez jejího deklarace. Chcete-li se dozvědět více o strict, navštivte JavaScript Strict.
Místní Působnosti
proměnná může mít také místní působnosti, jsem.e to může být přístupné pouze v rámci funkce.
Příklad 1: Místní Působnosti Proměnné
// program showing local scope of a variablelet a = "hello";function greet() { let b = "World" console.log(a + b);}greet();console.log(a + b); // error
Výstupní
helloWorldUncaught ReferenceError: b is not defined
Ve výše uvedeném programu, proměnná je globální proměnná a proměnná b je lokální proměnné. Proměnná b je přístupná pouze uvnitř funkce greet. Když se tedy pokusíme o přístup k proměnné b mimo funkci, dojde k chybě.
let je Block Scoped
Klíčové slovo let
je block-scoped (proměnná je přístupná pouze v bezprostředním bloku).
Příklad 2: blok-scoped Proměnné
// program showing block-scoped concept// global variablelet 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ýstupní
Hello WorldHello World helloUncaught ReferenceError: x is not defined
Ve výše uvedeném programu, proměnné,
- je globální proměnná. Je přístupný kdekoli v programu.
- b je lokální proměnná. Lze k němu přistupovat pouze uvnitř funkce
greet
. - c je bloková proměnná. Lze k němu přistupovat pouze uvnitř bloku příkazů
if
.
proto ve výše uvedeném programu fungují první dva console.log()
bez problémů.
snažíme se však získat přístup k blokově vymezené proměnné c mimo blok ve třetím console.log()
. To bude hodit chybu.
Poznámka: V Javascriptu, var
je funkce rozsahem a let
je blokový-scoped. Pokud se pokusíte použít var c = 'hello';
uvnitř if
prohlášení ve výše uvedeném programu, celý program funguje, a jak c je zacházeno jako lokální proměnné.
dozvědět Se více o let
nebo var
, navštivte JavaScript dovolte vs var.