Повдигането е механизъм на 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")
}