Hoisting er JavaScripts opførsel, hvor deklarationer flyttes til toppen af deres scope under kompileringsfasen, før koden kører. Men hvordan noget hoistet afhænger af deklarationstypen.
js
.(a);
a = ;
();
() { .(); }
.(b);
b = ;
Hoisting er JavaScripts opførsel, hvor deklarationer flyttes til toppen af deres scope under kompileringsfasen, før koden kører. Men hvordan noget hoistet afhænger af deklarationstypen.
.(a);
a = ;
();
() { .(); }
.(b);
b = ;
var: deklaration hoistet og initialiseret til undefined. Så læsning af det tidligt giver undefined, ikke en fejl.function-deklarationer: fuldt hoistet — du kan kalde dem før deres definitionslinje.let / const: hoistet men ikke initialiseret. De sidder i Temporal Dead Zone (TDZ) fra blokens start til deres deklarationslinje; adgang til dem i TDZ kaster en ReferenceError.const f = () => {}) kan ikke kaldes tidligt — kun const/var-bindingen er hoistet, ikke funktionen.Hoisting forklarer "hvorfor er dette undefined?" og "hvorfor virker det at kalde denne funktion før dens definition?" TDZ for let/const er faktisk en feature — den gør stille undefined-fejl til høje fejl, hvilket opfordrer dig til at deklarere før brug.