Така че искате да научите Javascript и сте срещнали термина „повдигане“ и сте се запитали „Какво е повдигане в javascript?“. Може да си помислите, че е свързано с някаква форма на кран за кодиране или може би с издигане на флаг във вашия код. И докато метафорично казано бихте били донякъде прави, технически погледнато не бихте били. Това обаче е добре, защото това е причината да попаднете на тази тема в блога. (Току-що споменах блог в моя блог, обикновено добре ли е да разбиеш 4-та стена по този начин? ¯\_(ツ)_/¯)

Добре, да, както каза Кип от Наполеон Динамит, нека бъдем по-сериозни. Първо трябва да разберем основите на това какво включва повдигането в javascript. Най-просто казано, повдигането е механизъм на JavaScript, при който променливите и декларациите на функции се преместват в горната част на техния обхват преди изпълнението на кода. Това означава, че без значение къде са декларирани функцията и/или променливата, те се преместват в началото на техния обхват, независимо дали техният обхват е глобален или локален. Сега, ако това започне да става леко объркващо, силно препоръчвам да търсите в Google scopes в javascript и след това да се върнете към четенето на това. Пример за това ще изглежда така:

Сега виждате едно от предимствата на повдигането в javascript. Позволява ни да използваме функция, преди да я декларираме в нашия код. Без повдигане ще трябва да напишете същия код като такъв:

Чувствайте се свободни да тренирате с безплатен отговор, публикуван по-долу.



Повдигането всъщност работи и за променливи, така че можете да използвате променлива в кода, преди да бъде декларирана и/или инициализирана. Въпреки това JavaScript само повдига декларации, не инициализации! Това означава, че инициализацията не се случва, докато не се изпълни съответният ред от код, дори ако променливата първоначално е била инициализирана, след това декларирана, или декларирана и инициализирана в същия ред. Докато не бъде достигната тази точка в изпълнението, променливата има своята инициализация по подразбиране (недефинирана за променлива, декларирана чрез var, иначе неинициализирана). Добре, че вече не използваме var благодарение на ES6 Javascript.

Използвайки Let и Const

Можем също да използваме let и const повдигане в Javascript, но за разлика от var, те не се инициализират със стойност по подразбиране. Ще бъде хвърлено изключение, ако променлива, декларирана с let и const, бъде прочетена преди да бъде инициализирана. Пример:

console.log(num); // Throws ReferenceError exception as the variable         value is uninitialized
let num = 30; // Initialization

Заключение

И така, какво е TL;DR и защо повдигането има значение? Може би си казвате, след като прочетете цялата тази информация за повдигането, че „не е ли просто повдигане на моята декларация на функция и променлива до върха на моя обхват?“ Това разбиране би било много елементарно и вероятно няма да ви преведе през техническото интервю. И така, за да обобщим, по време на фазата на компилиране javascript съхранява декларации на променливи и функции в паметта, което ви позволява да получите достъп до тях във вашия код, преди те действително да бъдат написани. Запомнете това следващия път, когато се натъкнете на TypeError!s.

Благодаря ви, че отделихте време да прочетете моя блог, сега ще ви оставя с този програмен мем.