Scope refererer til tilgængeligheden af variabler og funktioner i visse dele af koden.
i JavaScript har en variabel to typer omfang:
- globalt omfang
- lokalt omfang
globalt omfang
en variabel, der er erklæret øverst i et program eller uden for en funktion, betragtes som en global omfangsvariabel.
lad os se et eksempel på en global omfangsvariabel.
// program to print a text let a = "hello";function greet () { console.log(a);}greet(); // hello
i ovenstående program erklæres variabel a øverst i et program og er en global variabel. Det betyder variablen a
kan bruges overalt i programmet.
værdien af en global variabel kan ændres i en funktion. 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 ovenstående program er variabel a en global variabel. Værdien af A er Hej. Derefter åbnes variablen a inde i en funktion, og værdien ændres til 3.
derfor ændres værdien af a efter at have ændret den inde i funktionen.
Bemærk: Det er en god praksis at undgå at bruge globale variabler, fordi værdien af en global variabel kan ændre sig på forskellige områder i programmet. Det kan introducere ukendte resultater i programmet.
i JavaScript kan en variabel også bruges uden at erklære den. Hvis en variabel bruges uden at erklære den, bliver denne variabel automatisk en global variabel.
for eksempel
function greet() { a = "hello"}greet();console.log(a); // hello
i ovenstående program er variabel a en global variabel.
Hvis variablen blev erklæret ved hjælp af let a = "hello"
, ville programmet kaste en fejl.
Bemærk: I JavaScript er der "strict mode";
hvor en variabel ikke kan bruges uden at erklære den. For at lære mere om streng, besøg JavaScript streng.
lokalt omfang
en variabel kan også have et lokalt omfang, dvs.det kan kun åbnes inden for en funktion.
eksempel 1: Lokal Scope variabel
// 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
i ovenstående program er variabel a en global variabel og variabel b er en lokal variabel. Variablen b kan kun åbnes inde i funktionen hilse. Derfor, når vi forsøger at få adgang til variabel b uden for funktionen, opstår der en fejl.
Lad er blok Scoped
let
søgeord er blok-scoped (variabel kan kun tilgås i den umiddelbare blok).
eksempel 2: blok-scoped variabel
// 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();
Output
Hello WorldHello World helloUncaught ReferenceError: x is not defined
i ovenstående program er variabel
- a en global variabel. Det kan tilgås overalt i programmet.
- b er en lokal variabel. Det kan kun åbnes inde i funktionen
greet
. - c er en blok-scoped variabel. Det kan kun åbnes inde i
if
Sætningsblok.
derfor arbejder de to førsteconsole.log()
uden problemer.
Vi forsøger dog at få adgang til den blok-scoped variabel c uden for blokken i den tredjeconsole.log()
. Dette vil kaste en fejl.
Bemærk: i JavaScript,var
Er funktion scoped oglet
er blok-scoped. Hvis du forsøger at brugevar c = 'hello';
inde iif
erklæringen i ovenstående program fungerer hele programmet, da c behandles som en lokal variabel.
for at lære mere omlet
versusvar
, besøg JavaScript let vs var.