Повдигането е механизъм на JavaScript, при който декларациите на променливи и функции се поставят в паметта по време на фазата на компилиране. Това означава, че без значение къде са декларирани функциите и променливите, те се преместват в горната част на своя обхват, независимо дали техният обхват е глобален или локален.
Стойността обаче не се вдига с декларацията.
Следният фрагмент:
console.log(hoist)
var hoist = "value"
е еквивалентно на:
var hoist
console.log(hoist)
hoist = "value"
Следователно регистрирането hoist
извежда undefined
към конзолата, а не "value"
.
Повдигането също ви позволява да извикате декларация на функция, преди да изглежда, че е декларирана в програма.
myFunction() // No error; logs "hello"
function myFunction() {
console.log("hello")
}
Но внимавайте с функционални изрази, които са присвоени на променлива:
myFunction() // Error: `myFunction` is not a function
var myFunction = function() {
console.log("hello")
}