Tässä opetusohjelmassa opit muuttujan laajuudesta JavaScriptissä esimerkkien avulla.
Soveltamisala viittaa muuttujien ja toimintojen saatavuuteen tietyissä koodin osissa.
JavaScriptissä muuttujalla on kahden tyyppinen laajuus:
- Globaali soveltamisala
- Paikallinen soveltamisala
Globaali soveltamisala
Muuttujaa, joka on ilmoitettu ohjelman yläosassa tai toiminnon ulkopuolella, pidetään globaalina laajuusmuuttujana.
Katsotaanpa esimerkki globaalista laajuusmuuttujasta.
// program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello
Yllä olevassa ohjelmassa muuttuja a ilmoitetaan ohjelman yläosassa ja on globaali muuttuja. Se tarkoittaa, että muuttujaa a
voidaan käyttää missä tahansa ohjelmassa.
Globaalin muuttujan arvoa voidaan muuttaa funktion sisällä. Esimerkiksi,
// 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
Yllä olevassa ohjelmassa muuttuja a on globaali muuttuja. A-arvon arvo on hei. Sitten muuttujaan a pääsee funktion sisällä ja arvo muuttuu arvoksi 3.
Siksi muutoksen arvo muuttuu sen jälkeen, kun se on muutettu toiminnon sisällä.
Huomaa : On hyvä välttää globaalien muuttujien käyttöä, koska globaalin muuttujan arvo voi muuttua ohjelman eri alueilla. Se voi tuoda tuntemattomia tuloksia ohjelmaan.
JavaScriptissä muuttujaa voidaan käyttää myös ilmoittamatta sitä. Jos muuttujaa käytetään ilmoittamatta sitä, muuttujasta tulee automaattisesti globaali muuttuja.
Esimerkiksi,
function greet() ( a = "hello" ) greet(); console.log(a); // hello
Yllä olevassa ohjelmassa muuttuja a on globaali muuttuja.
Jos muuttuja ilmoitetaan käyttäen let a = "hello"
, ohjelma heittää virheen.
Huomaa : JavaScriptissä "strict mode";
muuttujaa ei voida käyttää ilmoittamatta sitä. Jos haluat lisätietoja tiukasta, käy JavaScriptin tiukassa.
Paikallinen soveltamisala
Muuttujalla voi olla myös paikallinen laajuus, ts. Sitä voidaan käyttää vain toiminnon sisällä.
Esimerkki 1: Paikallinen laajuusmuuttuja
// 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
Tuotos
helloWorld Uncaught ReferenceError: b ei ole määritelty
Yllä olevassa ohjelmassa muuttuja a on globaali muuttuja ja muuttuja b on paikallinen muuttuja. Muuttujaan b pääsee vain toiminnon tervehdyksen sisällä. Siksi, kun yritämme käyttää muuttujaa b toiminnon ulkopuolella, tapahtuu virhe.
Let is Block Scoped
let
Avainsana on lohko-scoped (muuttuja voidaan käyttää ainoastaan välittömässä lohko).
Esimerkki 2: lohkottu muuttuja
// 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();
Tuotos
Hei maailma Hei maailma hei kiinni jäänyt viitevirhe: x ei ole määritelty
Yllä olevassa ohjelmassa muuttuja
- a on globaali muuttuja. Sitä voi käyttää missä tahansa ohjelmassa.
- b on paikallinen muuttuja. Sitä voi käyttää vain toiminnon sisällä
greet
. - c on lohkomittainen muuttuja. Sitä voi käyttää vain
if
lauseosassa.
Siksi yllä olevassa ohjelmassa kaksi ensimmäistä console.log()
toimivat ongelmitta.
Yritämme kuitenkin päästä lohkokohtaiseen muuttujaan c kolmannen lohkon ulkopuolelle console.log()
. Tämä heittää virheen.
Huomaa : Javascriptissa var
funktio on rajattu ja let
lohkottu. Jos yrität käyttää yllä olevan ohjelman lauseen var c = 'hello';
sisällä if
, koko ohjelma toimii, koska c: tä käsitellään paikallisena muuttujana.
Jos haluat lisätietoja let
versusista var
, käy JavaScript let vs var.