Ebben az oktatóanyagban példák segítségével megismerheti a JavaScript változó hatókörét.
A hatókör a változók és függvények rendelkezésre állására utal a kód bizonyos részeiben.
A JavaScript-ben egy változó kétféle hatókörrel rendelkezik:
- Globális hatókör
- Helyi hatókör
Globális hatókör
A program tetején vagy a függvényen kívül deklarált változó globális hatókörű változónak számít.
Lássunk egy példát egy globális hatókörű változóra.
// program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello
A fenti programban az a változó deklarálva van a program tetején, és globális változó. Ez azt jelenti, hogy a változó a
bárhol használható a programban.
A globális változó értéke megváltoztatható egy függvényen belül. Például,
// 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
A fenti programban az a változó globális változó. Az a értéke hello. Ezután az a változóhoz hozzáférünk egy függvényen belül, és az érték 3-ra változik .
Ezért a változás értéke megváltozik, miután megváltoztatta a függvényen belül.
Megjegyzés : Jó gyakorlat elkerülni a globális változók használatát, mert a globális változó értéke változhat a program különböző területein. Ismeretlen eredményeket vezethet be a programba.
A JavaScript-ben egy változó deklarálás nélkül is használható. Ha egy változót deklarálás nélkül használunk, akkor a változó automatikusan globális változóvá válik.
Például,
function greet() ( a = "hello" ) greet(); console.log(a); // hello
A fenti programban az a változó globális változó.
Ha a változó használatával lett deklarálva let a = "hello"
, akkor a program hibát dob.
Megjegyzés : A JavaScript-ben van olyan "strict mode";
, amelyben egy változó nem használható deklarálás nélkül. Ha többet szeretne megtudni a szigorúról, látogasson el a JavaScript szigorú oldalára.
Helyi hatókör
A változónak lokális hatóköre is lehet, azaz csak egy függvényen belül érhető el.
1. példa: Helyi hatókör változó
// 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
Kimenet
helloWorld el nem fogott ReferenceError: b nincs meghatározva
A fenti programban az a változó globális változó, a b változó pedig helyi változó. A b változó csak az üdvözlő funkció belsejében érhető el. Ezért amikor megpróbálunk a b változóhoz hozzáférni a függvényen kívül, akkor hiba lép fel.
legyen a blokk hatóköre
A let
kulcsszó blokk hatókörű (a változó csak a közvetlen blokkban érhető el).
2. példa: blokk hatókörű változó
// 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();
Kimenet
Hello World Hello World hello Uncaught ReferenceError: x nincs meghatározva
A fenti programban változó
- az a globális változó. A program bárhol elérhető.
- b egy lokális változó. Csak a funkción belül érhető el
greet
. - c egy blokk hatókörű változó. Csak az
if
utasításblokkon belül érhető el.
Ezért a fenti programban az első két console.log()
kérdés nélkül működik.
Megpróbáljuk azonban elérni a c blokk hatókörű változót a harmadik blokkon kívül console.log()
. Ez hibát fog dobni.
Megjegyzés : A JavaScript-ben var
függvény hatóköre és let
blokk hatóköre van. Ha a fenti program utasításán var c = 'hello';
belül próbálkozik if
, az egész program működik, mivel a c-t helyi változóként kezeljük.
Ha többet szeretne megtudni a let
versusról var
, látogasson el a JavaScript let vs var oldalra.