Globalna varijabla u javascriptu se ne mijenja. JavaScript: opseg varijable. Lokalne i globalne varijable

03.04.2021 Savjet

Zadnje ažuriranje: 05.04.2018

Sve varijable u JavaScriptu imaju određeni opseg unutar kojeg mogu djelovati.

Globalne varijable

Sve varijable koje su deklarirane izvan funkcija su globalne:

var x = 5; neka je d = 8; funkcija displaySquare())( var z = x * x; console.log(z); )

Ovdje su varijable x i d globalne. Dostupni su s bilo kojeg mjesta u programu.

Ali varijabla z nije globalna, jer je definirana unutar funkcije.

Lokalne varijable

Varijabla definirana unutar funkcije je lokalna:

Funkcija displaySquare())( var z = 10; console.log(z); neka je b = 8; console.log(b); )

Varijable z i b su lokalne, postoje samo unutar funkcije. Ne mogu se koristiti izvan funkcije:

Funkcija displaySquare())( var z = 10; console.log(z); ) console.log(z); //greška jer z nije definiran

Kada funkcija završi svoj rad, sve varijable definirane u funkciji se uništavaju.

Skrivanje varijabli

Što ako imamo dvije varijable - jednu globalnu i drugu lokalnu - koje imaju isti naziv:

Var z = 89; funkcija displaySquare())( var z = 10; console.log(z); // 10 ) displaySquare(); // 10

U ovom slučaju, funkcija će koristiti varijablu z koja je definirana izravno u funkciji. Odnosno, lokalna varijabla će sakriti globalnu.

var ili neka

Kada koristite naredbu let, svaki blok koda definira novi opseg u kojem postoji varijabla. Na primjer, možemo definirati varijablu na razini bloka i na razini funkcije u isto vrijeme:

Neka je z = 10; funkcija displayZ())( neka je z = 20; ( neka je z = 30; console.log("Blok:", z); ) console.log("Funkcija:", z); ) displayZ(); console.log("Globalno:", z);

Ovdje, unutar funkcije displayZ, postoji definiran blok koda u kojem je definirana varijabla z. Skriva globalnu varijablu i z varijablu definiranu na razini funkcije. U pravi program blok može predstavljati ugniježđenu funkciju, blok za petlju ili ako konstrukti. Ali u svakom slučaju, takav blok definira novi opseg, izvan kojeg varijabla ne postoji.

I u ovom slučaju dobit ćemo sljedeći izlaz konzole:

Blok: 30 Funkcija: 20 Globalno: 10

S var operatorom ne možemo definirati varijablu s istim imenom i u funkciji i u bloku koda unutar te funkcije:

Funkcija displaySquare())( var z = 20; ( var z = 30; // Greška! Varijabla z je već definirana console.log("Block:", z); ) console.log("Function:", z) ;)

To jest, pomoću var možemo definirati varijablu s jednim imenom bilo na razini funkcije ili na razini bloka koda.

Konstante

Sve što se odnosi na operator let također se odnosi na operator const, koji vam omogućuje definiranje konstanti. Blokovi koda definiraju opseg konstanti, a konstante definirane na ugniježđenim blokovima koda skrivaju vanjske konstante istog imena:

Konst z = 10; funkcija displayZ())( const z = 20; ( const z = 30; console.log("Blok:", z); // 30 ) console.log("Funkcija:", z); // 20 ) displayZ ( ); console.log("Globalno:", z); // 10

Nedeklarirane varijable

Ako ne koristimo ovu ključnu riječ kada definiramo varijablu u funkciji, tada će takva varijabla biti globalna. Na primjer:

Funkcija bar())( foo = "25"; ) bar(); konzola.log(foo); // 25

Iako varijabla foo nije definirana nigdje izvan funkcije trake, ipak je dostupna izvan funkcije u vanjskom kontekstu.

Bilo bi drugačije kada bismo ne samo dodijelili vrijednost varijabli, već je i definirali:

Funkcija bar())( var foo = "25"; ) bar(); konzola.log(foo); // pogreška

strogi režim

Definiranje globalnih varijabli u funkcijama može dovesti do potencijalne pogreške. Da biste ih izbjegli, koristite strogi način rada:

"koristi strog"; funkcija bar())( foo = "25"; ) traka(); konzola.log(foo);

U tom slučaju dobit ćemo pogrešku SyntaxError: Unexpected identifier, koja označava da varijabla foo nije definirana.

Postoje dva načina za postavljanje strogog načina rada:

    dodajte izraz "use strict" na početak JavaScript koda, tada će se strogi način primijeniti na sav kod

    dodajte izraz "use strict" na početak tijela funkcije, tada će se strogi način primijeniti samo na ovu funkciju


Nastavljamo proučavati temu funkcija u JavaScriptu. Ovdje ćemo se dotaknuti koncepta varijabilnog opsega. Usko je povezan s funkcijama, pa ga je važno razumjeti.

Treba naučiti (i razlikovati ove pojmove) samo jedna stvar je da su varijable globalne i lokalne.

Što su globalne varijable? Pogledajmo primjer...

var global = 21; /* Stvori globalnu varijablu */

funkcija myFun () /* Kreirajte funkciju koja prikazuje varijablu */
{
document.write(globalno);
}

mojaZabava(); /* Poziv funkcije */

U ovom smo primjeru stvorili globalnu varijablu, koja je globalna - sada je možemo koristiti - na primjer, unutar funkcije, kao što vidite sami.

Ovo je bit globalnih varijabli – one se kreiraju jednom (recimo na početku skripte, kao što ste vidjeli u primjeru) a zatim se koristi u programskom kodu gdje je to potrebno (u nizovima, funkcijama itd.).

Što su lokalne varijable? Pogledajmo ponovno primjer...

funkcija myFun _2 () /* Stvori funkciju */
{

var local = 42;
document.write(lokalno);
}

mojaZabava_2(); /* Poziv funkcije */

Ovaj primjer ilustrira stvaranje lokalne varijable: local. Lokalna je jer se stvara unutar funkcije. I može se koristiti samo unutar njega.

Ako pokušamo prikazati ovu varijablu izvan funkcije, nećemo vidjeti ništa u prozoru preglednika.

funkcija myFun _2 () /* Stvori funkciju */
{

var local = 42; /* Stvori lokalnu varijablu */
document.write(lokalno);
}

document.write(lokalno); /* Pokušavam prikazati lokalnu varijablu izvan funkcije */

Na ovim jednostavni primjeri Pogledali smo koncept opsega varijable u JavaScriptu. Još jednom ponovimo njegovu bit: ako kreiramo varijablu unutar funkcije, onda je ona lokalna i možemo s njom raditi samo unutar te funkcije.

A varijable stvorene izvan funkcije nazivaju se globalne i mogu se koristiti bilo gdje, uključujući i unutar funkcije.

Varijable

Deklariranje varijabli

Prije nego što možete koristiti varijablu u JavaScriptu, ona mora biti deklarirana. Varijable se deklariraju pomoću ključna riječ var ovako:

Var i; var zbroj;

Jednom upotrebom ključne riječi var možete deklarirati više varijabli:

Deklariranje varijabli može se kombinirati s njihovom inicijalizacijom:

Var poruka = ​​"zdravo"; var i = 0, j = 0, k = 0;

Ako u naredbi var nije navedena početna vrijednost, tada se varijabla deklarira, ali njena početna vrijednost ostaje nedefinirana sve dok je program ne promijeni.

Ako imate iskustva s korištenjem programskih jezika sa statičkim tipovima podataka, kao što su C# ili Java, možete primijetiti da deklaracije varijabli u JavaScript nedostaje deklaracija tipa. Varijable u JavaScriptu mogu pohranjivati ​​vrijednosti bilo koje vrste. Na primjer, u JavaScriptu je moguće dodijeliti neke varijabilni broj, a zatim dodijelite liniju istoj varijabli:

Var i = 10; i = "zdravo";

Pomoću naredbe var možete deklarirati istu varijablu više puta. Ako ponovljena deklaracija sadrži inicijalizator, tada se ponaša kao obična naredba dodjele.

Ako pokušate pročitati vrijednost nedeklarisane varijable, JavaScript će generirati pogrešku. U strogom načinu rada koji pruža standard ECMAScript 5, pogreška se pojavljuje i pri pokušaju dodjele vrijednosti nedeklarisanoj varijabli. Međutim, povijesno gledano, i kada se ne izvršava u strogom načinu rada, ako dodijelite vrijednost varijabli koja nije deklarirana s var naredbom, JavaScript će stvoriti tu varijablu kao svojstvo globalnog objekta i djelovat će otprilike isto kao ispravno deklarirana varijabla. To znači da globalne varijable ne moraju biti deklarirane. Međutim, to se smatra lošom navikom i može biti izvor pogrešaka, stoga uvijek pokušajte deklarirati svoje varijable koristeći var.

Opseg varijable

Opseg varijable je dio programa za koji je varijabla definirana. Globalna varijabla ima globalni opseg - definirana je za cijeli JavaScript program. U isto vrijeme, varijable deklarirane unutar funkcije definirane su samo u njenom tijelu. Nazivaju se lokalnim i imaju lokalni opseg. Parametri funkcije također se smatraju lokalnim varijablama, definiranim samo unutar tijela te funkcije.

Unutar tijela funkcije, lokalna varijabla ima prednost nad globalnom varijablom istog imena. Ako deklarirate lokalnu varijablu ili parametar funkcije s istim imenom kao globalna varijabla, globalna varijabla će zapravo biti skrivena:

Var result = "globalno"; funkcija getResult() ( var result = "local"; return result; ); console.log(getResult()); // Prikaži "lokalno"

Kada deklarirate varijable s globalnim opsegom, naredba var se može izostaviti, ali kada deklarirate lokalne varijable, uvijek biste trebali koristiti naredbu var.

Varijable i konstante u JavaScriptu. Deklariranje varijabli i dodjeljivanje vrijednosti njima. Globalne i lokalne varijable. Korištenje konstanti

Deklariranje varijabli u JavaScriptu

Nazivi varijabli u JavaScriptu mogu se sastojati od slova, brojeva, znaka $ i znaka _, a naziv varijable ne može započeti brojem. Imajte na umu da je JavaScript osjetljiv na velika i mala slova i da su varijable a1 i A1 različite varijable. Nije preporučljivo koristiti ćirilicu, iako je moguće.
Varijable u JavaScriptu deklarirane su ključnom riječi var:

Var Peremennaya_1 var Peremennaya_2

Ne preporučuje se korištenje varijabli u JavaScriptu bez deklaracije. To je moguće, ali može dovesti do pogrešaka.

Dodjeljivanje vrijednosti varijablama

Dodjeljivanje vrijednosti deklariranim varijablama u JavaScriptu:

Peremennaya_1 = 25 Peremennaya_2 = "Dodijeljeni tekst je u ravnim navodnicima"

Varijablama možete dodijeliti vrijednost odmah nakon deklaracije:

Var Peremennaya_1 = 25 var Peremennaya_2 = "Dodijeljeni tekst je u ravnim navodnicima"

Vrijednost varijable u JavaScriptu može se promijeniti tijekom izvođenja programa. Kada pišete tekst u varijablu, ona mora biti unutar ravnih navodnika.

Lokalne i globalne varijable

Ako je varijabla deklarirana unutar funkcije, onda je lokalna i bit će dostupna (vidljiva) samo unutar ove funkcije. Kada funkcija izađe, lokalne varijable u JavaScriptu se uništavaju, tako da možete koristiti varijable s istim imenom u različitim funkcijama.

Ako je varijabla deklarirana izvan funkcija, onda je globalna i bit će dostupna (vidljiva) u svim funkcijama unutar stranice. Globalne varijable se uništavaju u JavaScriptu kada se stranica zatvori.

Konstante u JavaScriptu

Konstante su osmišljene kako bi olakšale rad s vašim kodom kada trebate koristiti ponovljene vrijednosti ili izraze. Dovoljno je jednom postaviti vrijednost konstante i možete je koristiti koliko god želite umetanjem u kod svojih programa. JavaScript nema ključnu riječ za deklariranje konstanti; umjesto konstanti koriste se regularne varijable. Da bismo razlikovali konstante od varijabli, one se obično označavaju velikim slovima, koristeći podvlaku ako je potrebno:

Var DRUG_CHELOVEKA = "Pas"

Navedeni primjer konstante nije posve potpun, budući da je riječ “Pas” već lako zapamtiti i umetnuti gdje je potrebno. Možete koristiti konstante u JavaScriptu za snimanje i umetanje složenijih vrijednosti, na primjer, teško pamtljive kodove, skupove znakova, dugačak tekst, web adrese, adrese E-mail, telefonski brojevi, razne koeficijente.

U JavaScriptu se konstante mogu prepisati kao varijable, ali ako to učinite, tada se gubi značenje konstanti.

Ovaj vodič od četiri dijela pokriva pisanje kvalitetnog JavaScript koda koji je jednostavan za održavanje i razvoj, čak i ako se morate vratiti na projekt nakon dugo vremena.

Napišite kod s očekivanjem da će morati biti podržan

Greške softver imaju svoj trošak. Njihov se trošak izražava u vremenu potrebnom za njihovo popravljanje. Posebno su skupe greške u javno pokrenutim projektima. Vrlo je dobro ako pogreške možete ispraviti odmah, dok vam je struktura koda još uvijek svježa i možete brzo pronaći problematično područje. Ali ako ste se prebacili na druge zadatke i već ste zaboravili značajke određenog koda, tada će povratak na projekt zahtijevati:

  • Vrijeme je za proučavanje i razumijevanje problema.
  • Vrijeme je da shvatite kôd koji uzrokuje problem.

Još jedan problem koji utječe na velike projekte ili tvrtke je da osoba koja ispravlja pogreške nije osoba koja ih stvara (i često nije osoba koja ih pronalazi u projektu). Stoga smanjenje vremena potrebnog za razumijevanje koda postaje kritičan problem, bez obzira na to jeste li sami napisali kod prije nekog vremena ili ga je napisao drugi programer iz vašeg tima. Odgovor na pitanje značajno će utjecati i na financijski rezultat projekta i na razinu zadovoljstva programera, jer ponekad je bolje sve napraviti na novi način nego provoditi sate i dane održavajući stari, nerazumljivi kod.

Još jedna činjenica o razvoju softvera je da obično traje duže čitanje kod, a ne njegovo stvaranje. Kada se problem inicijalno postavi, programer se fokusira i udubi u pitanje, a zatim sjedne i može stvoriti značajan kod u jednoj večeri. Onda kod vjerojatno radi, ali, prirodno softverski proizvodi, pojavljuju se situacije koje zahtijevaju ponavljane revizije koda. Na primjer:

  • Pogreške su otkrivene.
  • Projektu su dodane nove značajke.
  • Aplikacija se mora pokrenuti u novom okruženju (na primjer, pojavio se novi preglednik).
  • Svrha koda se mijenja.
  • Kôd treba potpuno prepisati ili prenijeti na drugu arhitekturu ili programski jezik.

Kao rezultat toga, nekoliko radnih sati potrošit će se na pisanje koda i nekoliko radnih dana na čitanje. Stoga je stvaranje koda koji se lako održava ključno za uspjeh aplikacije.

Kod koji se lako održava ima sljedeće karakteristike:

  • Lako se čita.
  • Dobro je strukturiran i dijelovi su međusobno usklađeni.
  • On je predvidljiv.
  • Čini se da ga je napisala jedna osoba.
  • Dokumentirano.
Minimiziranje upotrebe globalnih varijabli

JavaScript koristi funkcije za upravljanje kontekstom. Varijable deklarirane unutar funkcija za njih su lokalne i nisu im dostupne izvan funkcija. Globalne varijable se deklariraju izvan funkcija ili se jednostavno koriste bez deklaracije.

Svako JavaScript okruženje ima globalni objekt koji se koristi izvan funkcija. Svaka globalna varijabla koju stvorite postaje svojstvo globalnog objekta. U preglednicima, radi praktičnosti, postoji dodatno svojstvo na globalnom objektu koje se zove prozor koje (obično) pokazuje na sam globalni objekt. Sljedeći kod prikazuje primjer stvaranja i pristupa globalnim varijablama u okruženju preglednika:

Var myglobal = "zdravo"; console.log(myglobal); // "zdravo" console.log(window.myglobal); // "zdravo" console.log(window["myglobal"]); // "zdravo" console.log(this.myglobal); // "zdravo"

Problemi s globalnim varijablama

Problem s globalnim varijablama je taj što će one biti dostupne u cijelom JavaScript kodu vaše aplikacije ili stranice. Oni su u globalnom imenskom prostoru i uvijek postoji mogućnost sudara imenovanja, gdje dva različita dijela aplikacije definiraju globalne varijable s istim imenom, ali za različite svrhe.

Također, web stranica obično uključuje kod koji su napisali drugi programeri. Na primjer:

  • Ostale JavaScript biblioteke.
  • Skripte partnera za oglašavanje.
  • Kod za praćenje i analitiku korisnika.
  • Razni widgeti, gumbi i dodaci.

Recimo da je u jednoj od skripti treće strane definirana globalna varijabla koja se zove, na primjer, rezultat. Zatim definirate drugu globalnu varijablu u jednoj od svojih funkcija i nazovete je rezultat. Kao rezultat toga, zadnja deklaracija varijable rezultata će nadjačati prvu, a skripta treće strane može prestati raditi.

Stoga je za uspješno kombiniranje različitih kodova na jednoj stranici važno koristiti što manje globalnih varijabli. U ovom slučaju korištenje direktive var pri deklariranju varijabli igra značajnu ulogu.

Nažalost, vrlo je lako nenamjerno stvoriti globalnu varijablu u JavaScriptu zbog dvije njegove značajke. Prvo, možete koristiti varijablu bez deklariranja. Drugo, JavaScript ima definiciju impliciranog globala, što znači da svaka nedeklarisana varijabla postaje svojstvo globalnog objekta (i bit će dostupna kao ispravno deklarirana globalna varijabla). Na primjer:

Funkcija sum(x, y) ( // loše: implicirani globalni rezultat = x + y; vraća rezultat; )

U ovom kodu, varijabla rezultata se koristi bez deklaracije. Kod radi dobro, ali nakon poziva funkcije završit ćete s drugom varijablom rezultata u globalnom prostoru imena, što može dovesti do problema.

Pravilo minimiziranja je definiranje varijabli pomoću direktive var. Ispod je poboljšana verzija funkcije sum():

Funkcija sum(x, y) ( prom. rezultat = x + y; vrati rezultat; )

Još jedna loša opcija za stvaranje impliciranih globala je ulančavanje dodjele vrijednosti unutar var deklaracije. U sljedećem primjeru varijabla a bit će lokalna, a varijabla b globalna, što vjerojatno nije namjera kreatora koda:

// loše, nemoj koristiti funkciju foo() ( var a = b = 0; // ... )

Ako ste iznenađeni onim što se događa, to je stvar kalkulacija s desna na lijevo. Prvo se izvršava izraz b = 0, pa stoga varijabla b neće biti deklarirana. Povratna vrijednost izraza bit će 0, a dodijeljena je novoj lokalnoj varijabli a, koja je deklarirana direktivom var. Ova definicija varijabli je ekvivalentna sljedećoj notaciji:

Var a = (b = 0);

Ako ste već deklarirali varijable, tada će ulančani prikaz dobro funkcionirati i neće stvarati neželjene globalne varijable:

Funkcija foo() ( var a, b; a = b = 0; // obje varijable su lokalne )

Drugi razlog za izbjegavanje korištenja globalnih varijabli je prenosivost koda. Ako planirate pokrenuti kod u drugom okruženju, tada globalne varijable mogu prebrisati objekte koji nisu u izvornom okruženju (pa se može činiti da je ime koje koristite sigurno).

Nuspojava zaboravljene var deklaracije

Postoji mala razlika između eksplicitno definiranih i impliciranih globalnih varijabli. To je mogućnost brisanja varijable pomoću operatora brisanja:

  • Globalna varijabla deklarirana deklaracijom var (stvorena u programu izvan funkcija) ne može se izbrisati.
  • Implicitna globalna varijabla stvorena bez deklaracije (bez obzira gdje je stvorena) može se izbrisati.

Tehnički gledano, implicirana globalna varijabla je svojstvo globalnog objekta, a ne varijabla. Svojstva se mogu izbrisati pomoću operatora delete, ali varijable ne mogu:

// definiramo tri globalne varijable var global_var = 1; globalni_novar = 2; // loše (funkcija () ( global_fromfunc = 3; // loše )()); // Pokušaj brisanja delete global_var; // lažno brisanje global_novar; // istina brisanje global_fromfunc; // istina // Provjera brisanja typeof global_var; // "broj" typeof global_novar; // "nedefiniran" tip global_fromfunc; // "nedefiniran"

Pristup globalnom objektu

U preglednicima, globalni objekt je dostupan bilo gdje u vašem kodu kroz svojstvo window (osim ako ne učinite nešto posebno ili neočekivano, kao što je deklariranje lokalne varijable pod nazivom window). Ali u drugim okruženjima ovo pogodno svojstvo može biti dostupno na drugačiji način (ili čak uopće nije dostupno programeru). Ako trebate pristup globalnom objektu bez korištenja identifikatora prozora, tada možete koristiti sljedeću metodu na bilo kojoj razini prostora imena ugniježđene funkcije:

Var global = (function () ( return this; )());

Dakle, uvijek je moguće pristupiti globalnom objektu, jer unutar funkcije koja se poziva kao funkcija (a ne kao konstruktor s novom deklaracijom), to uvijek ukazuje na globalni objekt.

Predložak pojedinačne deklaracije var

Korištenje jedne deklaracije var na vrhu vaše funkcije vrlo je korisna praksa. Ova metoda ima sljedeće prednosti:

  • Omogućuje jedno mjesto za deklariranje svih lokalnih varijabli funkcije.
  • Sprječava logičke pogreške kada se varijabla koristi prije deklaracije.
  • Pomaže zapamtiti deklariranje lokalnih varijabli i stoga smanjuje broj globalnih varijabli.

Predložak s jednom var deklaracijom izgleda ovako:

Funkcija func() ( var a = 1, b = 2, sum = a + b, myobject = (), i, j; // Kod funkcije... )

Za deklaraciju više varijabli, odvojenih zarezima, koristite jednu deklaraciju var. Izvrstan dodatak bio bi inicijalizirati varijable s izvornim podacima kada ih deklarirate. To sprječava logičke pogreške (sve neinicijalizirane varijable postavljene su na nedefinirane prema zadanim postavkama) i poboljšava čitljivost koda. Kada kasnije pregledate kod, kako možete odrediti svrhu varijable prema njoj početna vrijednost(na primjer, odmah će biti vidljivo da je to objekt ili cijeli broj).

Također možete izvesti operaciju na deklaraciji varijabli, kao što je zbroj = a + b iz prethodnog primjera koda. Drugi radni primjer je DOM manipulacija. Možete dodijeliti reference na DOM elemente lokalnim varijablama kada deklarirate:

Funkcija updateElement() ( var el = document.getElementById("result"), style = el.style; // izvođenje operacija s el i style...)

Podizanje: problem s razbacanim deklaracijama var

JavaScript dopušta višestruke deklaracije var bilo gdje u funkciji i one djeluju jednako bez obzira na položaj. Ova značajka poznat kao "uspon". Ovo ponašanje može dovesti do logičkih pogrešaka kada koristite varijablu i zatim je deklarirate za kasniji funkcijski kod. Za JavaScript, budući da je varijabla u istom prostoru imena (u istoj funkciji), pretpostavlja se da je deklarirana, čak i ako se koristi prije direktive var. Na primjer

// loše moje ime = "globalno"; // globalna varijabla funkcija func() ( alert(myname); // "undefined" var myname = "local"; alert(myname); // "local" ) func();

U u ovom primjeru Očekuje se da će prvi poziv alert() proizvesti "globalnu" poruku, a drugi poziv "local". Razumno očekivanje jer pri prvom pozivu lokalna varijabla myname nije deklarirana i funkcija mora koristiti globalnu varijablu myname. Ali u stvarnosti stvari funkcioniraju drugačije. Prvi poziv alert() će vratiti "undefined" jer se myname tretira kao deklarirana lokalna varijabla u funkciji (iako će deklaracija doći kasnije). Sve deklaracije varijabli podižu se na vrh funkcije. Stoga, da biste izbjegli ovu vrstu pogreške, trebate deklarirati sve varijable na vrhu funkcije.

Prethodni primjer će djelovati kao da je ovako implementiran:

Moje ime = "globalno"; // funkcija globalne varijable func() ( var myname; // isto kao -> var myname = undefined; alert(myname); // "undefined" myname = "local"; alert(myname); // " local" ) func();

Vrijedno je spomenuti da je stvarna implementacija koda složenija. Postoje dvije faze obrade koda. Prva faza stvara varijable, deklaracije funkcija i formalne parametre te definira kontekst. Druga faza izvršava kod, procjenjuje funkcije i stvara nekvalificirane identifikatore (nedeklarisane varijable). Ali za praktičnu upotrebu, možete koristiti koncept podizanja, koji dobro opisuje ponašanje koda.