В този урок ще научите за повдигането на JavaScript с помощта на примери.
Повдигането в JavaScript е поведение, при което може да се използва функция или променлива преди декларацията. Например,
// using test before declaring console.log(test); // undefined var test;
Горната програма работи и изходът ще бъде недефиниран. Горната програма се държи като
// using test before declaring var test; console.log(test); // undefined
Тъй като променливият тест е само деклариран и няма стойност, му undefined
се присвоява стойност.
Ако искате да научите повече за променливите, посетете променливите на JavaScript.
Забележка : Въпреки че изглежда, че декларацията се е преместила нагоре в програмата, действителното нещо, което се случва, е, че декларациите за функции и променливи се добавят към паметта по време на фазата на компилиране.
Променливо повдигане
По отношение на променливи и константи, ключовата дума var
е издигнато и let
и const
не позволява подемно.
Например,
// program to display value a = 5; console.log(a); var a; // 5
В горния пример се използва променлива a преди да се декларира. И програмата работи и показва резултата 5. Програмата се държи като:
// program to display value var a; a = 5; console.log(a); // 5
В JavaScript обаче инициализациите не се повдигат. Например,
// program to display value console.log(a); var a = 5;
Изход
неопределено
Горната програма се държи като:
var a; console.log(a); a = 5;
Само декларацията се премества в паметта във фазата на компилиране. Следователно стойността на променлива a е, undefined
защото a се отпечатва, без да я инициализира.
Също така, когато променливата се използва във функцията, променливата се повдига само до върха на функцията. Например,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Изход
здравей Uncaught ReferenceError: b не е дефиниран
В горния пример променливата b се издига до върха на функцията greet
и се превръща в локална променлива. Следователно b е достъпен само във функцията. b не се превръща в глобална променлива.
За да научите повече за локалните и глобалните променливи, посетете обхвата на променливите на JavaScript.
Забележка : При повдигане декларацията на променливата е достъпна само за непосредствения обхват.
Ако се използва променлива с let
ключовата дума, тази променлива не се повдига. Например,
// program to display value a = 5; console.log(a); let a; // error
Изход
Uncaught ReferenceError: Няма достъп до „a“ преди инициализация
Докато се използва let
, променливата трябва да бъде декларирана първо.
Функция повдигане
Функция може да бъде извикана, преди да я декларира. Например,
// program to print the text greet(); function greet() ( console.log('Hi, there.'); )
Изход
Здрасти
В горната програма функцията greet
се извиква преди да я декларира и програмата показва изхода. Това се дължи на повдигане.
Въпреки това, когато функция се използва като израз , възниква грешка, тъй като се дебират само декларации. Например;
// program to print the text greet(); let greet = function() ( console.log('Hi, there.'); )
Изход
Uncaught ReferenceError: greet не е дефиниран
Ако var
се използва в горната програма, грешката ще бъде:
Uncaught TypeError: greet не е функция
Забележка : Обикновено повдигането не се извършва в други програмни езици като Python, C, C ++, Java.
Повдигането може да доведе до нежелани резултати във вашата програма. И най-добре е първо да декларирате променливи и функции, преди да ги използвате и да избягвате повдигането.
В случай на променливи е по-добре да се използва let
от var
.