Ebben az oktatóanyagban példák segítségével megismerheti a JavaScript emelését.
A JavaScript-be emelés egy olyan viselkedés, amelyben egy függvény vagy egy változó használható a deklarálás előtt. Például,
// using test before declaring console.log(test); // undefined var test;
A fenti program működik, és a kimenet meghatározatlan lesz. A fenti program úgy viselkedik
// using test before declaring var test; console.log(test); // undefined
Mivel a változó teszt csak deklarált és nincs értéke, undefined
ezért hozzá van rendelve az érték.
Ha többet szeretne megtudni a változókról, látogasson el a JavaScript-változók oldalra.
Megjegyzés : Bár úgy tűnik, hogy az emelésnél úgy tűnik, hogy a deklaráció feljebb lépett a programban, az történik, hogy a függvény és a változó deklarációk hozzáadódnak a memóriához a fordítás fázisában.
Változtatható emelés
A változók és az állandók szempontjából a kulcsszó fel var
van emelve, let
és const
nem teszi lehetővé az emelést.
Például,
// program to display value a = 5; console.log(a); var a; // 5
A fenti példában az a változót deklarálás előtt használjuk. És a program működik, és megjeleníti az 5. kimenetet. A program a következőképpen viselkedik:
// program to display value var a; a = 5; console.log(a); // 5
A JavaScript-ben azonban az inicializálásokat nem emelik fel. Például,
// program to display value console.log(a); var a = 5;
Kimenet
határozatlan
A fenti program a következőképpen viselkedik:
var a; console.log(a); a = 5;
Csak a deklaráció kerül a memóriába a fordítás fázisában. Ezért az a változó értéke undefined
azért van, mert az a inicializálás nélkül kerül kinyomtatásra.
Továbbá, ha a változót a függvényen belül használják, a változót csak a függvény tetejére emelik. Például,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Kimenet
hello Uncaught ReferenceError: b nincs meghatározva
A fenti példában a b változót a függvény tetejére emelik, greet
és lokális változóvá válik. Ezért b csak a függvényen belül érhető el. b nem válik globális változóvá.
Ha többet szeretne megtudni a helyi és globális változókról, látogasson el a JavaScript Variable Scope oldalra.
Megjegyzés : Az emelésnél a változó deklaráció csak a közvetlen hatályhoz érhető el.
Ha egy változót használnak a let
kulcsszóval, akkor ezt a változót nem emelik fel. Például,
// program to display value a = 5; console.log(a); let a; // error
Kimenet
El nem fogott ReferenceError: Az inicializálás előtt nem lehet hozzáférni az „a” -hoz
Használat közben let
először a változót kell deklarálni.
Funkció emelés
A függvény deklarálása előtt meghívható. Például,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Kimenet
Szia
A fenti programban a függvény greet
deklarálása előtt meghívásra kerül, és a program megmutatja a kimenetet. Ennek oka az emelés.
Ha azonban egy függvényt használunk kifejezésként , akkor hiba lép fel, mert csak a deklarációkat emeljük ki. Például;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Kimenet
El nem fogott ReferenceError: üdvözlet nincs meghatározva
Ha var
a fenti programban használnák, a hiba a következő lenne:
El nem fogott TypeError: az üdvözlés nem függvény
Megjegyzés : Az emelést általában más programozási nyelveken nem hajtják végre, például Python, C, C ++, Java.
Az emelés nemkívánatos eredményeket okozhat a programjában. És a legjobb, ha használat előtt deklaráljuk a változókat és a függvényeket, és kerüljük az emelést.
Változók esetén jobb használni, let
mint var
.