Scope 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 deklarert øverst i et program eller utenfor en funksjon betraktes 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 programmet ovenfor er variabel a deklarert øverst i et program og er en global variabel. Det betyr at variabelen a
kan brukes hvor som helst i programmet.
verdien av en global variabel kan endres inne i en funksjon. For eksempel
// 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
i programmet ovenfor er variabel a en global variabel. Verdien av a er hei. Deretter åpnes variabelen a inne i en funksjon og verdien endres til 3.
derfor endres verdien av a etter at den er endret inne i funksjonen.
Merk: Det er en god praksis å unngå å bruke globale variabler fordi verdien av en global variabel kan endres på ulike 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 å erklære 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 strenge, besøk JavaScript Strict.
Lokalt Omfang
en variabel kan også ha et lokalt omfang, dvs.det kan bare nås i en funksjon.
Eksempel 1: Lokal Omfangsvariabel
// program showing local scope of a variablelet a = "hello";function greet() { let b = "World" console.log(a + b);}greet();console.log(a + b); // error
Utgang
helloWorldUncaught ReferenceError: b is not defined
i programmet ovenfor er variabel a en global variabel og variabel b er en lokal variabel. Variabelen b kan bare nås innenfor funksjonen greet. Derfor, når vi prøver å få tilgang til variabel b utenfor funksjonen, oppstår en feil.
la Er Blokkomfang
let
søkeord er blokkomfang (variabel kan bare nås i umiddelbar blokk).
Eksempel 2: Blokkvariabel
// 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();
Utgang
Hello WorldHello World helloUncaught ReferenceError: x is not defined
i programmet ovenfor er variabel
- a en global variabel. Det kan nås hvor som helst i programmet.
- b er en lokal variabel. Den kan bare nås i funksjonen
greet
. - c er en variabel med blokkomfang. Den kan bare nås i
if
– setningsblokken.
derfor, i det ovennevnte programmet, fungerer de to første console.log()
uten noe problem.
vi prøver imidlertid å få tilgang til den blokkerte variabelen c utenfor blokken i den tredje console.log()
. Dette vil kaste en feil.
Merk: I JavaScript er var
funksjonsomfang og let
blokkomfang. Hvis du prøver å brukevar c = 'hello';
inne iif
– setningen i programmet ovenfor, fungerer hele programmet, da c behandles som en lokal variabel.
for å lære mer om let
versus var
, besøk JavaScript la vs var.