U ovom ćete tutorijalu uz primjere naučiti o podizanju JavaScripta.
Dizanje u JavaScript je ponašanje u kojem se funkcija ili varijabla mogu koristiti prije deklaracije. Na primjer,
// using test before declaring console.log(test); // undefined var test;
Gornji program radi i izlaz će biti nedefiniran. Gornji program ponaša se kao
// using test before declaring var test; console.log(test); // undefined
Budući da je varijabla test samo deklarirana i nema vrijednost, njoj undefined
se dodjeljuje vrijednost.
Ako želite saznati više o varijablama, posjetite JavaScript varijable.
Napomena : Iako se čini da se deklaracija u programu pomaknula prema gore, stvarna stvar koja se događa jest da se deklaracije funkcija i varijabli dodaju u memoriju tijekom faze kompajliranja.
Promjenjivo podizanje
U pogledu varijabli i konstanti, ključna riječ var
se podiže i let
te const
ne dopušta isticanje.
Na primjer,
// program to display value a = 5; console.log(a); var a; // 5
U gornjem primjeru, varijabla a koristi se prije nego što je deklarira. I program radi i prikazuje izlaz 5. Program se ponaša kao:
// program to display value var a; a = 5; console.log(a); // 5
Međutim, u JavaScriptu se inicijalizacije ne podižu. Na primjer,
// program to display value console.log(a); var a = 5;
Izlaz
nedefiniran
Gornji program ponaša se kao:
var a; console.log(a); a = 5;
Samo se deklaracija premješta u memoriju u fazi prevođenja. Stoga je vrijednost varijable a undefined
zato što se a ispisuje bez inicijalizacije.
Također, kada se varijabla koristi unutar funkcije, varijabla se podiže samo na vrh funkcije. Na primjer,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Izlaz
pozdrav Uncaught ReferenceError: b nije definiran
U gornjem primjeru varijabla b podignuta je na vrh funkcije greet
i postaje lokalna varijabla. Stoga je b dostupno samo unutar funkcije. b ne postaje globalna varijabla.
Da biste saznali više o lokalnim i globalnim varijablama, posjetite JavaScript Variable Scope.
Napomena : U podizanju, deklaracija varijable dostupna je samo neposrednom opsegu.
Ako se varijabla koristi s let
ključnom riječi, ta se varijabla ne podiže. Na primjer,
// program to display value a = 5; console.log(a); let a; // error
Izlaz
Uncaught ReferenceError: ne može pristupiti 'a' prije inicijalizacije
Tijekom korištenja let
, varijabla se mora prvo deklarirati.
Podizanje funkcije
Funkcija se može pozvati prije deklariranja. Na primjer,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Izlaz
Bok tamo
U gornjem programu, funkcija greet
se poziva prije nego što je prijavi, a program prikazuje izlaz. To je zbog dizanja.
Međutim, kada se funkcija koristi kao izraz , dolazi do pogreške jer se podižu samo deklaracije. Na primjer;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Izlaz
Uncaught ReferenceError: pozdrav nije definiran
Ako var
se koristi u gore navedenom programu, pogreška bi bila:
Uncaught TypeError: pozdrav nije funkcija
Napomena : Općenito se podizanje ne izvodi u drugim programskim jezicima kao što su Python, C, C ++, Java.
Podizanje može uzrokovati neželjene ishode u vašem programu. I najbolje je prvo deklarirati varijable i funkcije prije nego što ih upotrijebite i izbjegavajte podizanje.
U slučaju varijabli, bolje je koristiti let
nego var
.