Для начала, давайте сравним var и let. Ключевое отличие между var и let это то, что let помимо глобальной области видимости и области видимости функции позволяет определять переменные в области видимости блока. Это означает, что переменная созданная при помощи ключевого слова let доступна внутри “блока”, где она была создана, также и внутри вложенных блоков. Когда я сказал “блок”, я имел в виду что-либо окруженное фигурными скобками {}, например цикл for или оператор if.
var VS let
var: ограничена областью видимости функции.
let: ограничена областью видимости блока {}.
var VS let VS const
var:
ограничена областью видимости функции
её значение будет undefined если вы попытаетесь обратиться к ней до её объявления.
let:
ограничена областью видимости блока
вы получите ReferenceError если попытаетесь обратиться к ней до её объявления.
const:
ограничена областью видимости блока
вы получите ReferenceError если попытаетесь обратиться к ней до её объявления.
не может быть перезаписана.