Ответ
var - устаревший способ объявления переменных, имеет функциональную область видимости и поднимается (hoisting). Может быть переопределена и изменена.
let - имеет блочную область видимости ({}), не поднимается, может быть изменена, но не переопределена в пределах блока.
const - аналогична let, но не может быть переопределена или изменена после инициализации (кроме объектов и массивов, где можно менять свойства/элементы).
if (true) {
var a = 1;
let b = 2;
const c = 3;
}
console.log(a); // 1
console.log(b); // ReferenceError
console.log(c); // ReferenceErrorЛучше всегда использовать const по умолчанию, и let только когда нужно переопределять переменную. var не рекомендуется.