Selles õpetuses saate näidete abil õppida JavaScripti muutuja ulatust.
Reguleerimisala viitab muutujate ja funktsioonide kättesaadavusele koodi teatud osades.
JavaScripti muutuja on kahte tüüpi ulatusega:
- Ülemaailmne ulatus
- Kohalik ulatus
Ülemaailmne ulatus
Programmi ülaosas või väljaspool funktsiooni deklareeritud muutujat peetakse globaalse ulatusega muutujaks.
Vaatame globaalse ulatusega muutuja näidet.
// program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello
Ülaltoodud programmis deklareeritakse muutuja a programmi ülaosas ja see on globaalne muutuja. See tähendab, et muutujat a
saab kasutada kõikjal programmis.
Globaalse muutuja väärtust saab funktsiooni sees muuta. Näiteks,
// 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
Ülaltoodud programmis on muutuja a globaalne muutuja. A väärtus on tere. Siis pöördutakse muutuja a poole funktsiooni sees ja väärtus muutub 3-ks.
Seega muutub muutus väärtus pärast funktsiooni sees muutmist.
Märkus : Hea tava on vältida globaalsete muutujate kasutamist, kuna globaalse muutuja väärtus võib programmi erinevates piirkondades muutuda. See võib programmis tutvustada tundmatuid tulemusi.
JavaScriptis saab muutujat kasutada ka seda deklareerimata. Kui muutujat kasutatakse seda deklareerimata, muutub see muutuja automaatselt globaalseks muutujaks.
Näiteks,
function greet() ( a = "hello" ) greet(); console.log(a); // hello
Ülaltoodud programmis on muutuja a globaalne muutuja.
Kui muutuja deklareeriti kasutades let a = "hello"
, viskaks programm vea.
Märkus . JavaScripti puhul pole "strict mode";
muutujat võimalik seda deklareerimata kasutada. Rangete kohta lisateabe saamiseks külastage JavaScripti ranget.
Kohalik ulatus
Muutujal võib olla ka lokaalne ulatus, st sellele pääseb juurde ainult funktsiooni piires.
Näide 1: Kohaliku ulatuse muutuja
// 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äljund
tereWorld püüdmata ReferenceError: b pole määratletud
Ülaltoodud programmis on muutuja a globaalne muutuja ja muutuja b on kohalik muutuja. Muutujale b pääseb juurde ainult funktsiooni tervitus sees. Seega, kui proovime muutujale b juurde pääseda väljaspool funktsiooni, tekib tõrge.
olgu Blokeeritud ulatus
let
Märksõna on plokk-scoped (muutuja pääseb ainult vahetus plokk).
Näide 2: blokeeritud ulatusega muutuja
// 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äljund
Tere maailm Tere maailm tere püüdmata ReferenceError: x pole määratletud
Ülaltoodud programmis muutuja
- a on globaalne muutuja. Sellele pääseb juurde kõikjal programmis.
- b on lokaalne muutuja. Sellele pääseb juurde ainult funktsiooni sees
greet
. - c on ploki ulatusega muutuja. Sellele pääseb juurde ainult
if
lauseplokis.
Seega console.log()
töötavad ülaltoodud programmis kaks esimest probleemideta.
Kuid proovime pääseda ploki ulatusega muutujale c väljaspool kolmandat plokki console.log()
. See viskab vea.
Märkus . JavaScripti var
funktsioon on ulatusega ja let
blokeeritud. Kui proovite kasutada ülaltoodud programmi lause var c = 'hello';
sees if
, töötab kogu programm, kuna c-d käsitletakse kohaliku muutujana.
Et rohkem teada let
versus var
külastage JavaScript lase vs var.