Scope utal, hogy a rendelkezésre álló változók és funkciók bizonyos részein a kódot.
A JavaScriptben egy változónak kétféle hatóköre van:
- globális hatókör
- helyi hatókör
globális hatókör
EGY program tetején vagy egy függvényen kívül deklarált változó globális hatókör változónak tekinthető.
nézzünk 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ó EGY program tetején van deklarálva, és egy globális változó. Ez azt jelenti, hogy a a
változó bárhol használható a programban.
egy globális változó értéke megváltoztatható egy függvényen belül. Például:
// 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
a fenti programban az a változó globális változó. Az a értéke hello. Ezután az a változó egy függvényen belül érhető el, az érték pedig 3-ra változik.
ezért az érték a változások megváltoztatása után belül a függvény.
Megjegyzés: Jó gyakorlat a globális változók használatának elkerülése, mivel a globális változó értéke változhat a program különböző területein. Ismeretlen eredményeket vezethet be a programban.
A JavaScriptben egy változó is használható annak deklarálása nélkül. Ha egy változót deklarálás nélkül használnak, az 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ótlet a = "hello"
használatával deklarálták, a program hibát okoz.
Megjegyzés: A JavaScript-ben van "strict mode";
, amelyben egy változó nem használható annak deklarálása nélkül. Ha többet szeretne megtudni a szigorú, látogasson JavaScript szigorú.
helyi hatókör
egy változó helyi hatókörrel is rendelkezhet, 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 variablelet a = "hello";function greet() { let b = "World" console.log(a + b);}greet();console.log(a + b); // error
kimenet
helloWorldUncaught ReferenceError: b is not defined
a fenti programban az a változó globális változó, a B változó pedig helyi változó. A B változó csak a greet függvényen belül érhető el. Ezért, amikor megpróbáljuk elérni a B változót a függvényen kívül, hiba lép fel.
Let is Block Scoped
The let
kulcsszó block-scoped (változó csak a közvetlen blokkban érhető el).
2. példa: block-scoped Variable
// 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();
Output
Hello WorldHello World helloUncaught ReferenceError: x is not defined
a fenti programban a
- a változó globális változó. A program bárhol elérhető.
- b egy helyi változó. Csak a
greet
függvényen belül érhető el. - c egy blokk-hatókörű változó. Csak a
if
utasításblokkon belül érhető el.
ezért a fenti programban az első két console.log()
munka probléma nélkül.
azonban megpróbáljuk elérni a blokk-hatókörű C változót a blokkon kívül a harmadik console.log()
. Ez hibát okoz.
Megjegyzés: JavaScript nyelven var
is function scoped éslet
is block-scoped. Ha megpróbálja használni a var c = 'hello';
– t a if
nyilatkozatban a fenti programban, az egész program működik, mivel a C-t helyi változóként kezelik.
Ha többet szeretne megtudni a let
versus var
, látogasson el a JavaScript let vs var.