Самый банальный вопрос на собеседовании джуна фронтенда, и тем не менее не найти нормальных кратких статей по данной теме, везде лекции на 10 листов)
Так что вот, держите, краткий ликбез:
1. Переменные, объявленные через var, могут быть глобальными или иметь область видимости в рамках функции; let и const имеют блочную область видимости.
2. Var-переменные могут быть как обновлены, так и переопределены внутри области видимости; let-переменные можно обновлять, но не переопределять; const-переменные нельзя ни обновлять, ни переопределять.
3. Со всеми ними осуществляется поднятие наверх области видимости. Но если var-переменные при этом инициализируются как undefined, let и const не инициализируются.
4. В то время как var и let можно объявить, но не инициализировать, const необходимо инициализировать во время объявления.