📌 Чем var отличается от const ?



💬 Спрашивают в 23% собеседований



Ключевые слова var и const используются для объявления переменных, но они имеют ряд существенных различий, которые важно понимать для правильного использования в коде.



🤔 Область видимости (Scope)



Var:



Объявления переменных с ее использованием имеют функциональную область видимости (function scope), что означает, что переменная доступна везде в функции, где была объявлена.



Const:



Как и let, она имеет блочную область видимости (block scope), ограничивая доступность переменной блоком (например, циклом или условным оператором), в котором была объявлена.



🤔 Переназначение и изменение



Var:



Переменные, объявленные с помощью нее, могут быть переназначены и изменены. Это означает, что после объявления переменной её можно не только изменить, но и полностью переназначить на другое значение.



Const:



Переменные, объявленные с помощью нее, не могут быть переназначены. Однако, если переменная представляет собой объект или массив, её содержимое может быть изменено (например, можно добавить новое свойство в объект или новый элемент в массив). Важно понимать, что const предотвращает переназначение самой переменной, но не защищает содержимое объекта от изменений.



🤔 Поднятие (Hoisting)



Var:



Переменные, объявленные через нее, поднимаются в начало своей функциональной области видимости перед выполнением кода. Однако до их объявления в коде они будут иметь значение undefined.



Const:



Подобно let, ее объявления тоже поднимаются, но доступ к переменной до её объявления в коде приведёт к ошибке ReferenceError. Это явление известно как "временная мертвая зона".



🤔 Инициализация



Var:



Эти переменные можно объявить без инициализации, и их начальное значение будет undefined.



Const:



Эти переменные требуют обязательной инициализации при объявлении. Если попытаться объявить его без инициализации, это приведет к синтаксической ошибке.



🤔 Примеры:

var varVariable = 1;

varVariable = 2; // Переназначение возможно




const constVariable = { a: 1 };

constVariable.a = 2; // Изменение содержимого объекта возможно

// constVariable = { b: 3 }; // Переназначение вызовет ошибку




if (true) {

var varScope = "доступна везде в функции";

const constScope = "доступна только в этом блоке";

}

console.log(varScope); // Выведет строку

console.log(constScope); // Ошибка: constScope не определена




🤔 Итог:



Использование var, let и const зависит от нужд разработки. var предоставляет функциональную область видимости и большую гибкость за счёт возможности переназначения, но это может привести к ошибкам из-за непреднамеренных изменений или переназначений. const используется для объявления переменных, значение которых не должно изменяться, что помогает предотвратить случайное переназначение и делает код более предсказуемым. Сейчас let и const являются предпочтительными для блочной области видимости и контроля за изменяемостью данных.



🔥 ТОП ВОПРОСОВ С СОБЕСОВ



🔒 База собесов | 🔒 База тестовых