V tej vadnici boste s pomočjo primerov spoznali dvigovanje JavaScript.
Dvigovanje v JavaScript je vedenje, pri katerem je pred deklaracijo mogoče uporabiti funkcijo ali spremenljivko. Na primer
// using test before declaring console.log(test); // undefined var test;
Zgornji program deluje in rezultat ne bo opredeljen. Zgornji program se obnaša kot
// using test before declaring var test; console.log(test); // undefined
Ker je spremenljivka test samo deklarirana in nima vrednosti, undefined
ji je dodeljena vrednost.
Če želite izvedeti več o spremenljivkah, obiščite spremenljivke JavaScript.
Opomba : Čeprav se zdi, da se je deklaracija v programu dvignila, se dejansko zgodi, da se deklaracije funkcije in spremenljivke dodajo v pomnilnik med fazo prevajanja.
Variabilno dvigovanje
V smislu spremenljivk in konstant, ključna beseda var
je dvignjen in let
in const
ne omogoča dvigovanje.
Na primer
// program to display value a = 5; console.log(a); var a; // 5
V zgornjem primeru je spremenljivka a uporabljena, preden jo prijavimo. In program deluje in prikaže izhod 5. Program se obnaša kot:
// program to display value var a; a = 5; console.log(a); // 5
Vendar se v JavaScript inicializacije ne dvignejo. Na primer
// program to display value console.log(a); var a = 5;
Izhod
nedoločeno
Zgornji program se obnaša kot:
var a; console.log(a); a = 5;
V fazi prevajanja se v pomnilnik premakne samo izjava. Zato je vrednost spremenljivke a, undefined
ker je a natisnjena, ne da bi jo inicializirala.
Ko je spremenljivka uporabljena znotraj funkcije, je spremenljivka dvignjena samo na vrh funkcije. Na primer
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Izhod
pozdravljeni Uncaught ReferenceError: b ni definiran
V zgornjem primeru je spremenljivka b postavljena na vrh funkcije greet
in postane lokalna spremenljivka. Zato je b dostopen samo znotraj funkcije. b ne postane globalna spremenljivka.
Če želite izvedeti več o lokalnih in globalnih spremenljivkah, obiščite JavaScript Variable Scope.
Opomba : Pri dvigovanju je deklaracija spremenljivke dostopna samo neposrednemu obsegu.
Če je spremenljivka uporabljena s let
ključno besedo, ta spremenljivka ni dvignjena. Na primer
// program to display value a = 5; console.log(a); let a; // error
Izhod
Uncaught ReferenceError: pred inicializacijo ni mogoče dostopati do 'a'
Med uporabo let
je treba najprej prijaviti spremenljivko.
Funkcija dvigovanja
Funkcijo lahko pokličete, preden jo prijavite. Na primer
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Izhod
Zdravo
V zgornjem programu se funkcija greet
pokliče, preden jo prijavi in program prikaže izhodne podatke. To je posledica dvigovanja.
Ko pa je funkcija uporabljena kot izraz , pride do napake, ker so dvignjene samo izjave. Na primer;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Izhod
Uncaught ReferenceError: pozdrav ni definiran
Če bi var
bil uporabljen v zgornjem programu, bi bila napaka:
Uncaught TypeError: pozdrav ni funkcija
Opomba : Dvigovanja se na splošno ne izvajajo v drugih programskih jezikih, kot so Python, C, C ++, Java.
Dvigovanje lahko povzroči neželene rezultate v vašem programu. In najbolje je, da spremenljivke in funkcije najprej deklarirate, preden jih uporabite, in se izogibajte dvigovanju.
V primeru spremenljivk je bolje uporabiti let
kot var
.