У овом упутству ћете научити о подизању ЈаваСцрипт-а уз помоћ примера.
Дизање у ЈаваСцрипт је понашање у којем се функција или променљива могу користити пре декларације. На пример,
// using test before declaring console.log(test); // undefined var test;
Горе наведени програм ради и излаз неће бити дефинисан. Горе наведени програм понаша се као
// using test before declaring var test; console.log(test); // undefined
Пошто је варијабла тест само декларисана и нема вредност, undefined
њој се додељује вредност.
Ако желите да сазнате више о променљивим, посетите ЈаваСцрипт променљиве.
Напомена : Иако се чини да се декларација у програму померила према горе, стварна ствар која се дешава је да се декларације функција и променљивих додају у меморију током фазе компајлирања.
Променљиво подизање
Што се тиче варијабли и константи, кључна реч var
је подигнута и let
и const
не дозвољава дизања.
На пример,
// program to display value a = 5; console.log(a); var a; // 5
У горњем примеру, променљива а се користи пре него што је објави. А програм ради и приказује излаз 5. Програм се понаша као:
// program to display value var a; a = 5; console.log(a); // 5
Међутим, у ЈаваСцрипт-у се иницијализације не подижу. На пример,
// program to display value console.log(a); var a = 5;
Оутпут
недефинисан
Горњи програм понаша се као:
var a; console.log(a); a = 5;
Само се декларација премешта у меморију у фази компајлирања. Дакле, вредност променљиве а је undefined
зато што се а исписује без иницијализације.
Такође, када се променљива користи унутар функције, променљива се подиже само на врх функције. На пример,
// program to display value var a = 4; function greet() ( b = 'hello'; console.log(b); // hello var b; ) greet(); // hello console.log(b);
Оутпут
здраво Унцаугхт РеференцеЕррор: б није дефинисан
У горњем примеру, променљива б је подигнута на врх функције greet
и постаје локална променљива. Отуда је б доступан само унутар функције. б не постаје глобална променљива.
Да бисте сазнали више о локалним и глобалним променљивим, посетите ЈаваСцрипт променљиви опсег.
Напомена : У подизању, декларација променљиве је доступна само непосредном опсегу.
Ако се променљива користи са let
кључном речи, та променљива се не подиже. На пример,
// program to display value a = 5; console.log(a); let a; // error
Оутпут
Унцаугхт РеференцеЕррор: Не може се приступити 'а' пре иницијализације
Током коришћења 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.'); )
Оутпут
Унцаугхт РеференцеЕррор: поздрав није дефинисан
Ако var
се користи у горњем програму, грешка би била:
Унцаугхт ТипеЕррор: поздрав није функција
Напомена : Генерално се подизање не врши на другим програмским језицима као што су Питхон, Ц, Ц ++, Јава.
Подизање може проузроковати нежељене исходе у вашем програму. И најбоље је прво декларисати променљиве и функције пре него што их употребите и избегавајте подизање.
У случају променљивих, боље је користити let
него var
.