Zvednutí JavaScriptu
Zvednutí je výchozí chování JavaScriptu při přesouvání deklarací na začátek.
Prohlášení JavaScriptu jsou zvednuta
V JavaScriptu lze proměnnou deklarovat poté, co byla použita.
Jinými slovy; proměnná může být použita předtím, než byla deklarována.
Příklad 1 dává stejný výsledek jako příklad 2 :
Příklad 1
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
var x; // Declare x
Příklad 2
var x; // Declare x
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;
// Display x in the element
Abyste tomu porozuměli, musíte rozumět pojmu „zvedání“.
Zvednutí je výchozí chování JavaScriptu při přesouvání všech deklarací na začátek aktuálního rozsahu (na začátek aktuálního skriptu nebo aktuální funkce).
Klíčová slova let a const
Proměnné definované pomocí let
a const
jsou zvednuty do horní části bloku, ale nejsou inicializovány .
Význam: Blok kódu zná proměnnou, ale nelze ji použít, dokud nebude deklarována.
Použití let
proměnné před jejím deklarováním bude mít za následek
ReferenceError
.
Proměnná je v „časové mrtvé zóně“ od začátku bloku, dokud není deklarována:
Příklad
Výsledkem budeReferenceError
:
carName = "Volvo";
let carName;
Použití const
proměnné před jejím deklarováním je syntaktická chyba, takže kód jednoduše nespustí.
Příklad
Tento kód se nespustí.
carName = "Volvo";
const carName;
Přečtěte si více o let a const v JS Let / Const .
Inicializace JavaScriptu nejsou zvednuty
JavaScript shromažďuje pouze deklarace, nikoli inicializace.
Příklad 1 nedává stejný výsledek jako příklad 2 :
Příklad 1
var x = 5; // Initialize x
var y = 7; // Initialize y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
Příklad 2
var x = 5; // Initialize x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
var y = 7; // Initialize y
Dává smysl, že y není v posledním příkladu definováno?
Je tomu tak proto, že nahoru je vytažena pouze deklarace (var y), nikoli inicializace (=7).
Kvůli zvednutí bylo y deklarováno před jeho použitím, ale protože inicializace nejsou zvednuty, hodnota y není definována.
Příklad 2 je stejný jako psaní:
Příklad
var x = 5; // Initialize x
var y; // Declare y
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y; // Display x and y
y = 7; // Assign 7 to y
Uveďte své proměnné nahoře!
Zdvihání je (pro mnoho vývojářů) neznámým nebo přehlíženým chováním JavaScriptu.
Pokud vývojář nerozumí zdvihání, programy mohou obsahovat chyby (chyby).
Abyste se vyhnuli chybám, vždy deklarujte všechny proměnné na začátku každého rozsahu.
Protože takto JavaScript interpretuje kód, je to vždy dobré pravidlo.
JavaScript v přísném režimu neumožňuje použití proměnných, pokud nejsou deklarovány. V další kapitole si
prostudujte "použít přísné" .