Šajā apmācībā jūs uzzināsit par JavaScript pacelšanu, izmantojot piemērus.
Pacelšana JavaScript ir uzvedība, kurā funkciju vai mainīgo var izmantot pirms deklarēšanas. Piemēram,
// using test before declaring console.log(test); // undefined var test;
Iepriekš minētā programma darbojas, un izeja nebūs definēta. Iepriekš minētā programma darbojas kā
// using test before declaring var test; console.log(test); // undefined
Tā kā mainīgais tests ir tikai deklarēts un tam nav vērtības, tam undefined
tiek piešķirta vērtība.
Ja vēlaties uzzināt vairāk par mainīgajiem, apmeklējiet JavaScript mainīgos.
Piezīme : Lai gan šķiet, ka deklarācija programmā ir pārvietojusies uz augšu, faktiski notiek tas, ka funkcija un mainīgo deklarācijas tiek pievienotas atmiņai kompilēšanas posmā.
Mainīga pacelšana
Runājot par mainīgajiem un konstantēm atslēgvārds var
tiek pacelts, un let
, un const
neļauj celšanas.
Piemēram,
// program to display value a = 5; console.log(a); var a; // 5
Iepriekš minētajā piemērā mainīgais a tiek izmantots pirms tā deklarēšanas. Un programma darbojas un parāda izeju 5. Programma rīkojas šādi:
// program to display value var a; a = 5; console.log(a); // 5
Tomēr JavaScript valodā inicializācijas netiek atceltas. Piemēram,
// program to display value console.log(a); var a = 5;
Rezultāts
nenoteikts
Iepriekš minētā programma darbojas šādi:
var a; console.log(a); a = 5;
Tikai deklarācija tiek pārvietota uz atmiņu kompilēšanas fāzē. Tādējādi mainīgā a vērtība ir undefined
tāpēc, ka a tiek drukāts, to neinicializējot.
Turklāt, ja mainīgais tiek izmantots funkcijas iekšienē, mainīgais tiek pacelts tikai līdz funkcijas augšdaļai. Piemēram,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Rezultāts
sveiki Nenotverta ReferenceError: b nav definēts
Iepriekš minētajā piemērā mainīgais b tiek pacelts līdz funkcijas augšdaļai greet
un kļūst par lokālo mainīgo. Tādējādi b ir pieejams tikai funkcijas iekšpusē. b nekļūst par globālo mainīgo.
Lai uzzinātu vairāk par lokālajiem un globālajiem mainīgajiem, apmeklējiet JavaScript mainīgo tvērumu.
Piezīme : Pacelšanas laikā mainīgā deklarācija ir pieejama tikai tiešajai darbības jomai.
Ja mainīgais tiek izmantots ar let
atslēgvārdu, šis mainīgais netiek pacelts. Piemēram,
// program to display value a = 5; console.log(a); let a; // error
Rezultāts
Nenotverta ReferenceError: pirms inicializācijas nevar piekļūt “a”
Lietošanas let
laikā mainīgais ir jādeklarē vispirms.
Funkcijas pacelšana
Funkciju var izsaukt pirms tās deklarēšanas. Piemēram,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Rezultāts
Sveiki
Iepriekš minētajā programmā funkcija greet
tiek izsaukta pirms tās deklarēšanas, un programma parāda izvadi. Tas ir saistīts ar pacelšanu.
Tomēr, ja funkcija tiek izmantota kā izteiksme , rodas kļūda, jo tiek uzvilktas tikai deklarācijas. Piemēram;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Rezultāts
Nenotverta ReferenceError: sveiciens nav definēts
Ja var
to izmantotu iepriekš minētajā programmā, kļūda būtu:
Nenotverta TypeError: sveiciens nav funkcija
Piezīme : Parasti pacelšana netiek veikta citās programmēšanas valodās, piemēram, Python, C, C ++, Java.
Pacelšana var izraisīt nevēlamus rezultātus jūsu programmā. Vislabāk ir vispirms deklarēt mainīgos un funkcijas, pirms tos izmantot, un izvairīties no pacelšanas.
Mainīgo gadījumā labāk izmantot let
nevis var
.