JavaScript promjenjivi opseg (s primjerima)

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:

  1. Globalni opseg
  2. 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 amož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

letKljuč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 ifbloka 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 varje opseg funkcije i letblok-opseg. Ako pokušate koristiti var c = 'hello';unutar ifizraza u gore navedenom programu, cijeli program radi, jer se c tretira kao lokalna varijabla.

Da biste saznali više o letversus var, posjetite JavaScript let vs var.

Zanimljivi članci...