U ovom ćete tutorijalu uz primjere naučiti o promjenjivom opsegu u JavaScript-u.
Opseg se odnosi na dostupnost varijabli i funkcija u određenim dijelovima koda.
U JavaScriptu varijabla ima dvije vrste opsega:
- Globalni opseg
- Lokalni opseg
Globalni opseg
Varijabla deklarirana na vrhu programa ili izvan funkcije smatra se globalnom varijablom opsega.
Pogledajmo primjer globalne varijable opsega.
// program to print a text let a = "hello"; function greet () ( console.log(a); ) greet(); // hello
U gornjem programu varijabla a deklarirana je na vrhu programa i globalna je varijabla. To znači da se varijabla a
može koristiti bilo gdje u programu.
Vrijednost globalne varijable može se mijenjati unutar funkcije. Na primjer,
// 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
U gornjem programu varijabla a je globalna varijabla. Vrijednost a je zdravo. Tada se unutar funkcije pristupa varijabli a i vrijednost se mijenja na 3.
Stoga se vrijednost promjene mijenja nakon promjene unutar funkcije.
Napomena : Dobra je praksa izbjegavati korištenje globalnih varijabli jer se vrijednost globalne varijable može mijenjati u različitim područjima programa. U program može unijeti nepoznate rezultate.
U JavaScriptu se varijabla može koristiti i bez deklariranja. Ako se varijabla koristi bez deklariranja, ta varijabla automatski postaje globalna varijabla.
Na primjer,
function greet() ( a = "hello" ) greet(); console.log(a); // hello
U gornjem programu varijabla a je globalna varijabla.
Ako je varijabla deklarirana pomoću let a = "hello"
, program će izbaciti pogrešku.
Napomena : U JavaScript- "strict mode";
u postoji varijabla koja se ne može koristiti bez deklariranja. Da biste saznali više o strogom, posjetite JavaScript Strict.
Lokalni opseg
Varijabla također može imati lokalni opseg, tj. Može joj se pristupiti samo unutar funkcije.
Primjer 1: Promjenjiva lokalnog opsega
// 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
Izlaz
helloWorld Uncaught ReferenceError: b nije definiran
U gornjem programu, varijabla a je globalna varijabla, a varijabla b je lokalna varijabla. Varijabli b može se pristupiti samo unutar funkcije greet. Stoga, kada pokušavamo pristupiti varijabli b izvan funkcije, dolazi do pogreške.
neka je Block Scoped
let
Ključna riječ je blok s opsegom (varijabla se može pristupiti samo u neposrednoj bloku).
Primjer 2: varijabla s opsegom 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();
Izlaz
Hello World Hello World hello Uncaught ReferenceError: x nije definiran
U gornjem programu varijabla
- a je globalna varijabla. Može mu se pristupiti bilo gdje u programu.
- b je lokalna varijabla. Može mu se pristupiti samo unutar funkcije
greet
. - c je varijabla s opsegom bloka. Može mu se pristupiti samo unutar
if
bloka izvoda.
Dakle, u gore navedenom programu, prva dva console.log()
rade bez ikakvih problema.
Međutim, pokušavamo pristupiti varijabli c opsega bloka c izvan bloka u trećoj console.log()
. Ovo će izbaciti pogrešku.
Napomena : U JavaScript-u var
je opseg funkcije i let
blok-opseg. Ako pokušate koristiti var c = 'hello';
unutar if
izraza u gore navedenom programu, cijeli program radi, jer se c tretira kao lokalna varijabla.
Da biste saznali više o let
versus var
, posjetite JavaScript let vs var.