soveltamisala tarkoittaa muuttujien ja funktioiden saatavuutta koodin tietyissä osissa.
Javascriptissä muuttujalla on kahdenlaisia soveltamisaloja:
- globaali soveltamisala
- paikallinen soveltamisala
globaali soveltamisala
ohjelman yläosassa tai funktion ulkopuolella ilmoitettu muuttuja katsotaan yleiseksi laajuusmuuttujaksi.
katsotaan esimerkki globaalista scope-muuttujasta.
// program to print a text let a = "hello";function greet () { console.log(a);}greet(); // hello
edellä mainitussa ohjelmassa muuttuja a ilmoitetaan ohjelman yläreunassa ja se on globaali muuttuja. Se tarkoittaa, että muuttujaa a
voidaan käyttää missä tahansa ohjelmassa.
kokonaismuuttujan arvo voidaan muuttaa funktion sisällä. Esimerkiksi
// 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
edellä mainitussa ohjelmassa muuttuja a on globaali muuttuja. A: n arvo on hello. Sitten muuttuja a pääsee funktion sisään ja arvo muuttuu 3: ksi.
näin ollen A: n arvo muuttuu muutettuaan sitä funktion sisällä.
Huomautus: On hyvä käytäntö välttää globaalien muuttujien käyttöä, koska globaalin muuttujan arvo voi muuttua ohjelman eri osa-alueilla. Se voi esitellä tuntemattomia tuloksia ohjelmassa.
Javascriptissä muuttujaa voidaan käyttää myös julistamatta sitä. Jos muuttujaa käytetään ilmoittamatta sitä, siitä tulee automaattisesti kokonaismuuttuja.
esimerkiksi
function greet() { a = "hello"}greet();console.log(a); // hello
edellä mainitussa ohjelmassa muuttuja a on globaali muuttuja.
jos muuttuja olisi ilmoitettu käyttämällä let a = "hello"
, ohjelma heittäisi virheen.
Huomautus: Javascriptissä on "strict mode";
, jossa muuttujaa ei voi käyttää julistamatta sitä. Lisätietoja tiukka, käy JavaScript tiukka.
Local Scope
muuttujalla voi olla myös paikallinen ulottuvuus, eli sitä voi käyttää vain funktion sisällä.
Esimerkki 1: Local Scope-muuttuja
// program showing local scope of a variablelet a = "hello";function greet() { let b = "World" console.log(a + b);}greet();console.log(a + b); // error
Output
helloWorldUncaught ReferenceError: b is not defined
edellä mainitussa ohjelmassa muuttuja a on globaali muuttuja ja muuttuja b on paikallinen muuttuja. Muuttujaa b voidaan käyttää vain funktion greet sisällä. Näin ollen, kun yritämme käyttää muuttuja b ulkopuolella funktio, virhe tapahtuu.
let on lohkokakkosena
let
avainsana on lohkokakkosena (muuttujaa voi käyttää vain välittömässä lohkossa).
Esimerkki 2: lohkomuuttuja
// 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();
Lähtö
Hello WorldHello World helloUncaught ReferenceError: x is not defined
edellä mainitussa ohjelmassa muuttuja
- A on globaali muuttuja. Sitä voi käyttää missä tahansa ohjelmassa.
- b on paikallinen muuttuja. Sitä voi käyttää vain funktion
greet
sisällä. - c on lohkomainen muuttuja. Sitä voi käyttää vain
if
statement Blockin sisällä.
näin ollen edellä mainitussa ohjelmassa kaksi ensimmäistä console.log()
toimivat ongelmitta.
yritämme kuitenkin päästä lohkon ulkopuoliseen muuttujaan c kolmannella console.log()
. Tämä heittää virhe.
Huom: Javascriptissä var
on funktio scoped ja let
on block scoped. Jos yrität käyttää var c = 'hello';
if
lausetta yllä olevassa ohjelmassa, koko ohjelma toimii, koska c käsitellään paikallisena muuttujana.
lisätietoja let
versus var
, käy JavaScript Let vs var.