V tomto výukovém programu se na příkladech dozvíte o zvedání JavaScriptu.
Zvedání v JavaScriptu je chování, při kterém lze před deklarací použít funkci nebo proměnnou. Například,
// using test before declaring console.log(test); // undefined var test;
Výše uvedený program funguje a výstup bude nedefinovaný. Výše uvedený program se chová jako
// using test before declaring var test; console.log(test); // undefined
Protože test proměnné je pouze deklarován a nemá žádnou hodnotu, undefined
je mu přiřazena hodnota.
Pokud se chcete dozvědět více o proměnných, navštivte Proměnné JavaScriptu.
Poznámka : I když se při zvedání zdá, že se deklarace v programu posunula nahoru, stane se skutečná věc, že deklarace funkcí a proměnných jsou přidány do paměti během fáze kompilace.
Variabilní zdvihání
Pokud jde o proměnných a konstant, klíčové slovo var
je zvednuta a let
a const
nedovolí zvedat.
Například,
// program to display value a = 5; console.log(a); var a; // 5
Ve výše uvedeném příkladu se proměnná a použije před deklarováním. A program funguje a zobrazuje výstup 5. Program se chová jako:
// program to display value var a; a = 5; console.log(a); // 5
V JavaScriptu však inicializace nejsou zvednuty. Například,
// program to display value console.log(a); var a = 5;
Výstup
nedefinováno
Výše uvedený program se chová jako:
var a; console.log(a); a = 5;
Pouze deklarace se přesune do paměti ve fázi kompilace. Hodnota proměnné a je undefined
proto, že a je vytištěna bez její inicializace.
Když se proměnná používá uvnitř funkce, proměnná se také zvedne pouze na začátek funkce. Například,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Výstup
ahoj Uncaught ReferenceError: b není definováno
Ve výše uvedeném příkladu je proměnná b zvednuta na vrchol funkce greet
a stává se místní proměnnou. Proto b je přístupné pouze uvnitř funkce. b se nestane globální proměnnou.
Další informace o místních a globálních proměnných najdete v oboru proměnných JavaScriptu.
Poznámka : Při zvedání je deklarace proměnné přístupná pouze okamžitému rozsahu.
Pokud je s let
klíčovým slovem použita proměnná , tato proměnná není zvednuta. Například,
// program to display value a = 5; console.log(a); let a; // error
Výstup
Uncaught ReferenceError: Cannot access 'a' before initialization
Při používání let
musí být proměnná deklarována jako první.
Zvedání funkcí
Funkci lze vyvolat před jejím prohlášením. Například,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Výstup
Ahoj
Ve výše uvedeném programu je funkce greet
volána před deklarováním a program zobrazuje výstup. To je způsobeno zvedáním.
Pokud je však funkce použita jako výraz , dojde k chybě, protože jsou vytaženy pouze deklarace. Například;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Výstup
Uncaught ReferenceError: greet is not defined
Pokud by var
byl použit ve výše uvedeném programu, chyba by byla:
Uncaught TypeError: greet is not a function
Poznámka : Zvedání se obecně neprovádí v jiných programovacích jazycích, jako je Python, C, C ++, Java.
Zvedání může ve vašem programu způsobit nežádoucí výsledky. Před použitím proměnných a funkcí je nejlepší deklarovat je a vyhnout se zvedání.
V případě proměnných je lepší použít let
než var
.