С появлением стандарта ES6 (ECMAScript 2015) в JavaScript были введены новые способы объявления переменных — let и const. До этого программисты пользовались только var. Хотя все три ключевых слова позволяют объявлять переменные, между ними есть важные различия, которые влияют на область видимости, возможность изменения и поведение при инициализации.
1. var — старый способ объявления переменных
var использовался с самого начала JavaScript. Переменные, объявленные с помощью var, обладают следующими особенностями:
Функциональная область видимости — переменная видна во всей функции, в которой она объявлена, или глобально, если объявлена вне функции.
Поднятие (hoisting) — объявления
varподнимаются вверх своей области видимости. Это значит, что переменная существует до момента объявления, но имеет значениеundefined.Повторное объявление разрешено — одну и ту же переменную можно объявить несколько раз без ошибок.
function example() {
console.log(a); // undefined
var a = 10;
console.log(a); // 10
}
example();
⚠️ Минус: из-за поднятия и отсутствия блочной области видимости var часто приводит к трудноуловимым ошибкам.
2. let — современный и безопасный способ объявления
Ключевое слово let введено в ES6 и рекомендуется к использованию в большинстве случаев.
Блочная область видимости — переменная видна только внутри блока
{ ... }, в котором она объявлена.Поднятие есть, но неинициализированная область (TDZ) — переменная существует до объявления, но к ней нельзя обратиться, пока выполнение не достигнет строки объявления.
Повторное объявление запрещено в одной области видимости.
{
let x = 5;
console.log(x); // 5
}
console.log(x); // ReferenceError: x is not defined
✅ Используйте let, если значение переменной должно изменяться.
3. const — объявление констант
const также имеет блочную область видимости, но при этом:
Значение должно быть присвоено при объявлении.
Переназначение запрещено.
Изменение содержимого объектов и массивов возможно, если не меняется сама ссылка.
const PI = 3.14;
// PI = 3.1415; // Ошибка
const user = { name: "Alex" };
user.name = "Bob"; // Разрешено
console.log(user); // { name: "Bob" }
✅ Используйте const по умолчанию, а let — только если значение нужно изменить.
✅ Итог
Используйте
constдля большинства переменных.Используйте
let, когда нужно изменить значение.Избегайте
var, если нет необходимости поддерживать старые версии JavaScript.
Vue3.ru