I denne opplæringen lærer du om JavaScript-heising ved hjelp av eksempler.
Heising i JavaScript er en oppførsel der en funksjon eller en variabel kan brukes før erklæring. For eksempel,
// using test before declaring console.log(test); // undefined var test;
Ovennevnte program fungerer, og utdataene vil være udefinert. Ovennevnte program oppfører seg som
// using test before declaring var test; console.log(test); // undefined
Siden variabeltesten kun er deklarert og ikke har noen verdi, undefined
tildeles den verdien.
Hvis du vil lære mer om variabler, kan du gå til JavaScript-variabler.
Merk : Selv om det ser ut til at erklæringen har flyttet seg opp i programmet, er det faktiske at funksjonen og variabeldeklarasjonene legges til minnet under kompileringsfasen.
Variabel heising
Når det gjelder variabler og konstanter, var
heises nøkkelord let
og const
tillater ikke heising.
For eksempel,
// program to display value a = 5; console.log(a); var a; // 5
I eksemplet ovenfor brukes variabel a før den erklæres. Og programmet fungerer og viser utdata 5. Programmet oppfører seg som:
// program to display value var a; a = 5; console.log(a); // 5
Imidlertid blir initialiseringer ikke heist i JavaScript. For eksempel,
// program to display value console.log(a); var a = 5;
Produksjon
udefinert
Ovennevnte program oppfører seg som:
var a; console.log(a); a = 5;
Bare erklæringen blir flyttet til minnet i kompileringsfasen. Derfor er verdien av variabel a undefined
fordi a skrives ut uten å initialisere den.
Når variabelen brukes inne i funksjonen, heises variabelen bare til toppen av funksjonen. For eksempel,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Produksjon
hei Ikke fanget ReferenceError: b er ikke definert
I eksemplet ovenfor heises variabel b til toppen av funksjonen greet
og blir en lokal variabel. Derfor er b bare tilgjengelig i funksjonen. b blir ikke en global variabel.
For å lære mer om lokale og globale variabler, besøk JavaScript Variable Scope.
Merk : Under heising er variabeldeklarasjonen bare tilgjengelig for det umiddelbare omfanget.
Hvis en variabel brukes med let
nøkkelordet, heises ikke denne variabelen. For eksempel,
// program to display value a = 5; console.log(a); let a; // error
Produksjon
Ikke fanget referansefeil: Kan ikke få tilgang til 'a' før initialisering
Under bruk let
må variabelen deklareres først.
Heising av funksjon
En funksjon kan kalles før du erklærer den. For eksempel,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Produksjon
Hei der
I det ovennevnte programmet greet
kalles funksjonen før den erklæres, og programmet viser utdataene. Dette skyldes heising.
Imidlertid, når en funksjon brukes som et uttrykk , oppstår en feil fordi bare erklæringer er heist. For eksempel;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Produksjon
Ikke fanget referansefeil: hilsen er ikke definert
Hvis det var
ble brukt i programmet ovenfor, ville feilen være:
Unc fanget TypeError: hilsen er ikke en funksjon
Merk : Generelt utføres ikke heising på andre programmeringsspråk som Python, C, C ++, Java.
Heising kan føre til uønskede resultater i programmet ditt. Og det er best å erklære variabler og funksjoner først før du bruker dem, og unngå heising.
Når det gjelder variabler, er det bedre å bruke let
enn var
.