let, const, var

  • var
    • функциональная область видимости
    • undefined при доступе к переменной до ее объявления
  • let
    • блочная область видимости
    • ReferenceError при доступе к переменной до ее объявления
  • const
    • блочная область видимости
    • Не позволяет менять значение (позволяет!)
    • если переменная содержит ссылку на значение, например объект, то значение свойство можно менять добавлять и тд

Hoisting

console.log(a) // 5

var a = 5;