Selles õpetuses saate näidete abil õppida JavaScripti tõstmist.
JavaScripti tõstmine on käitumine, kus funktsiooni või muutujat saab kasutada enne avaldamist. Näiteks,
 // using test before declaring console.log(test); // undefined var test;
Ülaltoodud programm töötab ja väljund on määratlemata. Ülaltoodud programm käitub nii
 // using test before declaring var test; console.log(test); // undefined
Kuna muutuja test on ainult deklareeritud ja sellel pole väärtust, undefinedmääratakse sellele väärtus.
Kui soovite muutujate kohta lisateavet, külastage JavaScripti muutujaid.
Märkus . Ehkki näib, et deklaratsioon on programmis ülespoole liikunud, juhtub tegelikult see, et funktsioon ja muutujadeklaratsioonid lisatakse kompileerimise etapis mällu.
Muutuv tõstmine
Seoses muutujad ja konstandid, märksõna varheisatakse ja letja constei võimalda heiskamise.
Näiteks,
 // program to display value a = 5; console.log(a); var a; // 5
Ülaltoodud näites kasutatakse muutujat enne selle deklareerimist. Ja programm töötab ja kuvab väljundi 5. Programm käitub järgmiselt:
 // program to display value var a; a = 5; console.log(a); // 5
Kuid JavaScripti initsialiseerimist ei tühistata. Näiteks,
 // program to display value console.log(a); var a = 5;
Väljund
määratlemata
Ülaltoodud programm käitub järgmiselt:
 var a; console.log(a); a = 5;
Ainult deklaratsioon teisaldatakse kompileerimise faasis mällu. Seega on muutuja a väärtus undefinedseetõttu, et a trükitakse seda initsialiseerimata.
Samuti, kui muutujat kasutatakse funktsiooni sees, tõstetakse muutuja ainult funktsiooni tippu. Näiteks,
 // program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Väljund
tere Uncaught ReferenceError: b pole määratletud
Ülaltoodud näites tõstetakse muutuja b funktsiooni tippu greetja sellest saab lokaalne muutuja. Seega on b juurdepääsetav ainult funktsiooni sees. b ei muutu globaalseks muutujaks.
Kohalike ja globaalsete muutujate kohta lisateabe saamiseks külastage JavaScripti muutuja ulatust.
Märkus . Tõstmisel on muutuja deklaratsioon juurdepääsetav ainult vahetu ulatusega.
Kui letmärksõnaga kasutatakse muutujat , siis seda muutujat ei tõsteta. Näiteks,
 // program to display value a = 5; console.log(a); let a; // error
Väljund
Püüdmata ReferenceError: enne lähtestamist ei pääse 'a' juurde
Kasutamise ajal lettuleb kõigepealt deklareerida muutuja.
Funktsiooni tõstmine
Funktsiooni saab enne selle deklareerimist kutsuda. Näiteks,
 // program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Väljund
Tere
Ülaltoodud programmis greetkutsutakse funktsioon enne selle deklareerimist ja programm näitab väljundit. Selle põhjuseks on tõstmine.
Kuid kui funktsiooni kasutatakse avaldisena , ilmneb tõrge, sest ainult deklaratsioonid on heisatud. Näiteks;
 // program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Väljund
Püüdmatu ReferenceError: tervitus pole määratletud
Kui varseda kasutati ülaltoodud programmis, oleks viga järgmine:
Püütamata TypeError: tervitus pole funktsioon
Märkus . Üldiselt ei tehta tõstmist muudes programmeerimiskeeltes, nagu Python, C, C ++, Java.
Tõstmine võib teie programmis põhjustada soovimatuid tulemusi. Parim on deklareerida muutujad ja funktsioonid enne nende kasutamist ning vältida tõstmist.
Muutujate puhul on parem kasutada letkui var.








