Spremenljiv obseg JavaScript (s primeri)

V tej vadnici boste s pomočjo primerov spoznali spremenljiv obseg v JavaScript.

Obseg se nanaša na razpoložljivost spremenljivk in funkcij v določenih delih kode.

V JavaScript ima spremenljivka dve vrsti obsega:

  1. Globalni obseg
  2. Lokalni obseg

Globalni obseg

Spremenljivka, deklarirana na vrhu programa ali zunaj funkcije, se šteje za spremenljivko globalnega obsega.

Poglejmo primer spremenljivke globalnega obsega.

 // program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello

V zgornjem programu je spremenljivka a navedena na vrhu programa in je globalna spremenljivka. To pomeni, da je spremenljivko amogoče uporabiti kjer koli v programu.

Vrednost globalne spremenljivke je mogoče spremeniti znotraj funkcije. Na primer

 // 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

V zgornjem programu je spremenljivka a globalna spremenljivka. Vrednost a je zdravo. Nato se v funkciji dostopa do spremenljivke a in vrednost se spremeni na 3.

Zato se vrednost spremembe spremeni po spremembi znotraj funkcije.

Opomba : Dobra praksa je, da se izogibate uporabi globalnih spremenljivk, ker se lahko vrednost globalne spremenljivke spreminja na različnih področjih programa. V program lahko vnese neznane rezultate.

V JavaScript lahko spremenljivko uporabljate tudi, ne da bi jo prijavili. Če spremenljivko uporabimo, ne da bi jo prijavili, ta spremenljivka samodejno postane globalna spremenljivka.

Na primer

 function greet() ( a = "hello" ) greet(); console.log(a); // hello

V zgornjem programu je spremenljivka a globalna spremenljivka.

Če bi bila spremenljivka razglašena z uporabo let a = "hello", bi program povzročil napako.

Opomba : V JavaScript obstaja "strict mode";spremenljivka, ki je ni mogoče uporabiti, ne da bi jo prijavili. Če želite izvedeti več o strogem, obiščite JavaScript Strict.

Lokalni obseg

Spremenljivka ima lahko tudi lokalni obseg, tj. Do nje lahko dostopate samo znotraj funkcije.

Primer 1: Spremenljivka lokalnega obsega

 // 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

Izhod

 helloWorld Uncaught ReferenceError: b ni definiran

V zgornjem programu je spremenljivka a globalna spremenljivka, spremenljivka b pa lokalna spremenljivka. Do spremenljivke b lahko dostopate samo znotraj funkcije pozdrav. Ko torej poskusimo dostopati do spremenljivke b zunaj funkcije, pride do napake.

dovoljeno je Block Scoped

Ključna letbeseda ima obseg blokov (spremenljivka je dostopna samo v neposrednem bloku).

Primer 2: spremenljivka z obsegom bloka

 // 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();

Izhod

 Hello World Hello World hello Uncaught ReferenceError: x ni definiran

V zgornjem programu spremenljivka

  • a je globalna spremenljivka. Do njega lahko dostopate kjer koli v programu.
  • b je lokalna spremenljivka. Do njega lahko dostopate samo znotraj funkcije greet.
  • c je spremenljivka z obsegom. Do njega je mogoče dostopati samo znotraj ifbloka stavkov.

Tako v zgornjem programu prva dva console.log()delujeta brez težav.

Vendar v tretji poskušamo dostopati do spremenljivke c z obsegom bloka c zunaj bloka console.log(). To bo povzročilo napako.

Opomba : V JavaScript varje obseg funkcije in obseg letbloka. Če poskušate uporabiti var c = 'hello';znotraj ifizjave v zgornjem programu, celoten program dela, kot je c obravnava kot lokalne spremenljivke.

Če želite izvedeti več o letprimerjavi var, obiščite JavaScript let vs var.

Zanimive Članki...