В ECMAScript6, разработчикам предложены новые способы объявления переменных с помощью ключевых слов 'let' и 'const'. Главное отличие между 'var' и 'const', заключается в том, что 'const' создает блочный уровень области видимости. Но что именно это значит?
Рассмотрим пример:
if (true) {
var x = 5;
}
console.log(x); // выводит '5'
С ключевым словом 'var', переменная x объявлена в блоке if, но доступна вне блока. Теперь рассмотрим аналогичный пример с 'const':
if (true) {
const y = 5;
}
console.log(y); // вызывает ошибку
В этом случае, константа 'y' объявлена в блоке if и доступна только внутри этого блока. Это и есть блочная область видимости - переменная или константа доступны только внутри того блока, где они были объявлены.
Другое ключевое отличие 'const' от 'var' - это то, что 'const' не может быть переназначена. Переменные, объявленные с 'var', можно переопределить, в то время как константы, объявленные с 'const', нельзя.
var a = 1;
a = 2; // вполне допустимо
const b = 1;
b = 2; // вызовет ошибку
Ключевые слова 'const' и 'var' придают коду большую предсказуемость и делают его более понятным, снижая вероятность возникновения ошибок. Как правило, если переменная не предполагает изменения значения, лучше всего использовать 'const'. Если изменение значения предполагается, то предпочтительнее использование 'let'. 'Var' все еще используется, но в большинстве случаев 'let' и 'const' являются более безопасными вариантами.