JavaScript-разработчик Satya Sootar опубликовал подробный гайд по переменным в JavaScript — базовой теме, которую часто объясняют слишком сложно или поверхностно.
Переменные в JavaScript — это именованные контейнеры для хранения данных. Представьте рюкзак: в нём лежат ноутбук, пропуск и ручка. Переменная работает так же — хранит информацию, которую программа использует для выполнения задач.
Три способа объявить переменную
В современном JavaScript есть три ключевых слова для создания переменных: let, const и var. Каждое работает по-своему.
let — создаёт контейнер, значение которого можно изменить. Переменная доступна только внутри блока кода, где объявлена (block scope):
let name = "Иван";
console.log(name); // Иван
name = "Пётр";
console.log(name); // Пётрconst — создаёт константу, значение которой нельзя переназначить. Тоже работает в блока:
const name = "Иван";
name = "Пётр"; // TypeError: Assignment to constant variablevar — старый способ объявления переменных. В отличие от let и const, переменные var доступны за пределами блока, но внутри функции. Это может привести к ошибкам:
if (true) {
var blockVar = "Я доступна везде";
}
console.log(blockVar); // Я доступна вездеОбласть видимости — главный подводный камень
Scope (область видимости) определяет, где в коде переменная доступна. У let и const блочная область видимости — переменная существует только внутри фигурных скобок, где объявлена.
У var функциональная область видимости плюс «всплытие» (hoisting) — JavaScript поднимает объявление в начало области видимости, но не присваивает значение. Это создаёт неожиэто поведение:
console.log(hoistedVar); // undefined (не ошибка!)
var hoistedVar = "Всплыла!";Практические рекомендации
Современные стандарты разработки рекомендуют забыть про var и использовать:
constпо умолчанию — для значений, которые не планируете менятьlet— когда нужно переназначить переменную
Такой подход снижает количество ошибок и делает код предсказуемым. ESLint и другие линтеры даже ругаются на использование var в новых проектах.
Понимание переменных — фундамент для изучения более сложных концепций JavaScript: замыканий, асинхронности и модулей.


