JavaScript-muuttujan laajuus (esimerkkien kanssa)

Tässä opetusohjelmassa opit muuttujan laajuudesta JavaScriptissä esimerkkien avulla.

Soveltamisala viittaa muuttujien ja toimintojen saatavuuteen tietyissä koodin osissa.

JavaScriptissä muuttujalla on kahden tyyppinen laajuus:

  1. Globaali soveltamisala
  2. 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 avoidaan 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

letAvainsana 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 iflauseosassa.

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 varfunktio on rajattu ja letlohkottu. 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 letversusista var, käy JavaScript let vs var.

Mielenkiintoisia artikkeleita...