I den här handledningen lär du dig om JavaScript-lyftning med hjälp av exempel.
Hissning i JavaScript är ett beteende där en funktion eller en variabel kan användas före deklaration. Till exempel,
// using test before declaring console.log(test); // undefined var test;
Ovanstående program fungerar och utdata kommer att vara odefinierad. Ovanstående program beter sig som
// using test before declaring var test; console.log(test); // undefined
Eftersom variabeltestet endast deklareras och inte har något undefined
värde tilldelas det värde.
Om du vill lära dig mer om variabler, besök JavaScript-variabler.
Anmärkning : Även om det verkar som att deklarationen har flyttat upp i programmet är det faktiska som händer att funktionen och de variabla deklarationerna läggs till minnet under kompileringsfasen.
Variabel lyftning
När det gäller variabler och konstanter, sökord var
hissas och let
och const
tillåter inte lyft.
Till exempel,
// program to display value a = 5; console.log(a); var a; // 5
I exemplet ovan används variabel a innan deklareras. Och programmet fungerar och visar utdata 5. Programmet beter sig som:
// program to display value var a; a = 5; console.log(a); // 5
Men i JavaScript lyfts inte initialiseringar. Till exempel,
// program to display value console.log(a); var a = 5;
Produktion
odefinierad
Ovanstående program beter sig som:
var a; console.log(a); a = 5;
Endast deklarationen flyttas till minnet i kompileringsfasen. Därför undefined
beror värdet på variabel a på att a skrivs ut utan att initialisera den.
När variabeln används inuti funktionen lyfts variabeln bara till toppen av funktionen. Till exempel,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Produktion
hej Uncaught ReferenceError: b definieras inte
I exemplet ovan lyfts variabel b till funktionens överkant greet
och blir en lokal variabel. Därför är b endast tillgängligt inuti funktionen. b blir inte en global variabel.
För att lära dig mer om lokala och globala variabler, besök JavaScript Variable Scope.
Obs! Vid lyftning är variabeldeklarationen endast tillgänglig för omedelbar omfattning.
Om en variabel används med let
nyckelordet lyfts inte variabeln upp. Till exempel,
// program to display value a = 5; console.log(a); let a; // error
Produktion
Uncaught ReferenceError: Kan inte komma åt 'a' före initialisering
Under användning let
måste variabeln deklareras först.
Funktionslyftning
En funktion kan anropas innan den förklaras. Till exempel,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Produktion
Hallå där
I programmet ovan greet
kallas funktionen innan den deklareras och programmet visar utdata. Detta beror på hissning.
Men när en funktion används som ett uttryck inträffar ett fel eftersom endast deklarationer lyfts. Till exempel;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Produktion
Uncaught ReferenceError: greet är inte definierad
Om var
det användes i ovanstående program skulle felet vara:
Uncaught TypeError: greet är inte en funktion
Obs! I allmänhet utförs inte lyftning på andra programmeringsspråk som Python, C, C ++, Java.
Hissning kan orsaka oönskade resultat i ditt program. Och det är bäst att deklarera variabler och funktioner först innan du använder dem och undvika att lyfta.
När det gäller variabler är det bättre att använda let
än var
.