Zdvíhanie JavaScriptu (s príkladmi)

V tomto tutoriále sa dozviete o zdvíhaní JavaScriptu pomocou príkladov.

Zdvíhanie v JavaScripte je správanie, pri ktorom je možné pred vyhlásením použiť funkciu alebo premennú. Napríklad,

 // using test before declaring console.log(test); // undefined var test;

Vyššie uvedený program funguje a výstup bude nedefinovaný. Vyššie uvedený program sa chová ako

 // using test before declaring var test; console.log(test); // undefined

Pretože test premenných je iba deklarovaný a nemá žiadnu hodnotu, undefinedje mu priradená hodnota.

Ak sa chcete dozvedieť viac informácií o premenných, navštívte Premenné jazyka JavaScript.

Poznámka : Aj keď sa pri zdvíhaní zdá, že sa deklarácia v programe posunula nahor, stane sa skutočne to, že deklarácie funkcií a premenných sa pridajú do pamäte počas fázy kompilácie.

Variabilné zdvíhanie

Pokiaľ ide o premenných a konštánt, kľúčové slovo varje zdvihnutá a leta constnedovolí dvíhať.

Napríklad,

 // program to display value a = 5; console.log(a); var a; // 5

Vo vyššie uvedenom príklade sa použije premenná a pred jej vyhlásením. A program funguje a zobrazuje výstup 5. Program sa chová ako:

 // program to display value var a; a = 5; console.log(a); // 5

V JavaScripte však nie sú inicializácie zdvihnuté. Napríklad,

 // program to display value console.log(a); var a = 5;

Výkon

 nedefinované

Vyššie uvedený program sa chová ako:

 var a; console.log(a); a = 5;

Iba deklarácia sa presunie do pamäte vo fáze kompilácie. Hodnota premennej a je undefinedpreto, že a je vytlačené bez jeho inicializácie.

Keď sa premenná používa vo vnútri funkcie, premenná sa zdvihne iba za hornú časť funkcie. Napríklad,

 // program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);

Výkon

 ahoj Uncaught ReferenceError: b nie je definované

Vo vyššie uvedenom príklade je premenná b zdvihnutá na vrchol funkcie greeta stáva sa lokálnou premennou. Preto b je prístupné iba vo vnútri funkcie. b sa nestane globálnou premennou.

Ak sa chcete dozvedieť viac o miestnych a globálnych premenných, navštívte rozsah premenných JavaScriptu.

Poznámka : Pri zdvíhaní je vyhlásenie o premennej prístupné iba v bezprostrednom rozsahu.

Ak sa s letkľúčovým slovom použije premenná, táto premenná sa ne zdvihne. Napríklad,

 // program to display value a = 5; console.log(a); let a; // error

Výkon

 Uncaught ReferenceError: Nie je možné získať prístup k znaku „a“ pred inicializáciou

Počas používania letmusí byť premenná deklarovaná ako prvá.

Funkčné zdvíhanie

Funkciu je možné zavolať pred jej vyhlásením. Napríklad,

 // program to print the text greet(); function greet() ( console.log('Hi, there.'); )

Výkon

 Ahoj

Vo vyššie uvedenom programe je funkcia greetvyvolaná pred jej vyhlásením a program zobrazuje výstup. Je to z dôvodu zdvíhania.

Ak sa však funkcia použije ako výraz , dôjde k chybe, pretože sa zdvíhajú iba vyhlásenia. Napríklad;

 // program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )

Výkon

 Uncaught ReferenceError: pozdrav nie je definovaný

Ak by varbol použitý vo vyššie uvedenom programe, chyba by bola:

 Uncaught TypeError: greet is not a function

Poznámka : Zdvíhanie sa vo všeobecnosti nevykonáva v iných programovacích jazykoch, ako sú Python, C, C ++, Java.

Zdvíhanie môže spôsobiť nežiaduce výsledky vo vašom programe. Najlepšie je najskôr premenné a funkcie deklarovať pred ich použitím a vyhnúť sa zdvíhaniu.

V prípade premenných je lepšie použiť letako var.

Zaujímavé články...