I denne vejledning lærer du om JavaScript-hejsning ved hjælp af eksempler.
Hejsning i JavaScript er en opførsel, hvor en funktion eller en variabel kan bruges før erklæring. For eksempel,
// using test before declaring console.log(test); // undefined var test;
Ovenstående program fungerer, og output bliver udefineret. Ovenstående program opfører sig som
// using test before declaring var test; console.log(test); // undefined
Da den variable test kun er deklareret og ikke har nogen værdi, undefined
tildeles den værdi.
Hvis du vil lære mere om variabler, skal du besøge JavaScript-variabler.
Bemærk : Selvom det ser ud til, at erklæringen er flyttet op i programmet under hejsning, er det faktiske, der sker, at funktionen og de variable erklæringer føjes til hukommelsen under kompileringsfasen.
Variabel hejsning
Med hensyn til variabler og konstanter var
hejses nøgleordet let
og const
tillader ikke hejsning.
For eksempel,
// program to display value a = 5; console.log(a); var a; // 5
I ovenstående eksempel anvendes variabel a, før den erklæres. Og programmet fungerer og viser output 5. Programmet opfører sig som:
// program to display value var a; a = 5; console.log(a); // 5
Imidlertid hejses initialiseringer ikke i JavaScript. For eksempel,
// program to display value console.log(a); var a = 5;
Produktion
udefineret
Ovenstående program opfører sig som:
var a; console.log(a); a = 5;
Kun erklæringen flyttes til hukommelsen i kompileringsfasen. Derfor er værdien af variabel a undefined
fordi a udskrives uden at initialisere den.
Når variablen bruges inde i funktionen, hejses variablen kun til toppen af funktionen. For eksempel,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Produktion
hej Ikke fanget ReferenceError: b er ikke defineret
I ovenstående eksempel hejses variabel b til toppen af funktionen greet
og bliver en lokal variabel. Derfor er b kun tilgængelig inden for funktionen. b bliver ikke en global variabel.
For at lære mere om lokale og globale variabler, besøg JavaScript Variable Scope.
Bemærk : Under hejsning er variabeldeklarationen kun tilgængelig for det umiddelbare omfang.
Hvis en variabel bruges med let
nøgleordet, hejses denne variabel ikke. For eksempel,
// program to display value a = 5; console.log(a); let a; // error
Produktion
Ikke fanget ReferenceError: Kan ikke få adgang til 'a' før initialisering
Under brug let
skal variablen først erklæres.
Funktionsløft
En funktion kan kaldes op, før den erklæres. For eksempel,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Produktion
Hej
I ovenstående program greet
kaldes funktionen, inden den erklæres, og programmet viser output. Dette skyldes hejsning.
Men når en funktion bruges som et udtryk , opstår der en fejl, fordi kun erklæringer hejses. For eksempel;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Produktion
Ikke fanget referencefejl: hilsen er ikke defineret
Hvis den var
blev brugt i ovenstående program, ville fejlen være:
Ufanget TypeError: hilsen er ikke en funktion
Bemærk : Generelt udføres hejsning ikke på andre programmeringssprog som Python, C, C ++, Java.
Hejsning kan medføre uønskede resultater i dit program. Og det er bedst at erklære variabler og funktioner først, før du bruger dem og undgå hejsning.
I tilfælde af variabler er det bedre at bruge let
end var
.