I denne veiledningen vil du lære om variabelt omfang i JavaScript ved hjelp av eksempler.
Omfang refererer til tilgjengeligheten av variabler og funksjoner i visse deler av koden.
I JavaScript har en variabel to typer omfang:
- Globalt omfang
- Lokalt omfang
Globalt omfang
En variabel som er erklært øverst i et program eller utenfor en funksjon, regnes som en global omfangsvariabel.
La oss se et eksempel på en global omfangsvariabel.
// program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello
I det ovennevnte programmet er variabel a erklært øverst i et program og er en global variabel. Det betyr at variabelen a
kan brukes hvor som helst i programmet.
Verdien til en global variabel kan endres i en funksjon. For eksempel,
// 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
I programmet ovenfor er variabel a en global variabel. Verdien av a er hei. Deretter får du tilgang til variabelen a i en funksjon, og verdien endres til 3.
Derfor endres verdien av en etter endring i funksjonen.
Merk : Det er en god praksis å unngå å bruke globale variabler fordi verdien av en global variabel kan endres i forskjellige områder i programmet. Det kan introdusere ukjente resultater i programmet.
I JavaScript kan en variabel også brukes uten å erklære den. Hvis en variabel brukes uten å deklarere den, blir den variabelen automatisk en global variabel.
For eksempel,
function greet() ( a = "hello" ) greet(); console.log(a); // hello
I programmet ovenfor er variabel a en global variabel.
Hvis variabelen ble deklarert ved hjelp av let a = "hello"
, ville programmet kaste en feil.
Merk : I JavaScript er det "strict mode";
der en variabel ikke kan brukes uten å erklære den. For å lære mer om streng, besøk JavaScript Strict.
Lokalt omfang
En variabel kan også ha et lokalt omfang, dvs. at den bare kan nås innenfor en funksjon.
Eksempel 1: Variabel for lokalt omfang
// 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
Produksjon
helloWorld Uncaught ReferenceError: b er ikke definert
I det ovennevnte programmet er variabel a en global variabel og variabel b er en lokal variabel. Variabelen b er kun tilgjengelig i funksjonshilsen. Derfor, når vi prøver å få tilgang til variabel b utenfor funksjonen, oppstår det en feil.
la oss blokkere Scoped
Den let
ordet er blokkomfang (variabelt kan nås bare i umiddelbar blokk).
Eksempel 2: Variabel med blokkfelt
// 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();
Produksjon
Hello World Hello World hallo Ikke fanget ReferenceError: x er ikke definert
I programmet ovenfor, variabelt
- a er en global variabel. Den er tilgjengelig hvor som helst i programmet.
- b er en lokal variabel. Den er kun tilgjengelig i funksjonen
greet
. - c er en variabel med blokkomfang. Den kan bare nås inne i
if
setningsblokken.
Derfor console.log()
fungerer de to første i det ovennevnte programmet uten problemer.
Imidlertid prøver vi å få tilgang til den variabel c-varianten c utenfor blokken i den tredje console.log()
. Dette vil føre til en feil.
Merk : I JavaScript var
er funksjonen omfang og let
er blokk-omfanget. Hvis du prøver å bruke var c = 'hello';
inne i if
utsagnet i programmet ovenfor, fungerer hele programmet, da c blir behandlet som en lokal variabel.
For å lære mer om let
versus var
, besøk JavaScript let vs var.