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

Подготовка к собеседованию на Frontend Developer

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

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

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

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

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

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

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

Поднятие (Hoisting)

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

- const: Объявления переменных с помощью const также поднимаются, но доступ к переменной до её объявления приведёт к ошибке ReferenceError. Это явление называется "временной мертвой зоной" (temporal dead zone).

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

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

- const: Переменные, объявленные с помощью 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 для управления блочной областью видимости и изменяемостью данных.

Роман ЕрмиловРоман Ермиловоколо 2 месяцев назад

Ваш ответ на вопрос

Помогите другим участникам подготовиться к собеседованию и пришлите ответ на вопрос, пожалуйста укажите источник вашего ответа

7 видео, где есть этот вопрос

Подборка видео из публичных собеседований с таймкодом, где задавали этот или похожий на него вопрос

Менторы

Специалисты своей области, которые смогут помочь вам

  • Володин Данил
    Володин Данил

    Senior Frontend в Альфа-Банк

  • Мирзоев Мубориз
    Мирзоев Мубориз

    Middle Frontend developer

  • Левин Ян
    Левин Ян

    Middle+ Frontend

  • Куянец Руслан
    Куянец Руслан

    Senior Frontend Разработчик

  • Тарасов Дамир
    Тарасов Дамир

    Frontend-разработчик в MyfinGroup и Aventica

  • Золотов Всеволод
    Золотов Всеволод

    Frontend Tech Lead

  • Ефремов Денис
    Ефремов Денис

    Senior Fullstack Developer @ Yandex

  • Вейнин Григорий
    Вейнин Григорий

    Senior Frontend Developer

  • Клевогин Максим
    Клевогин Максим

    Middle Frontend developer

  • Бикишов Дмитрий
    Бикишов Дмитрий

    Senior Frontend

© 2024 HireGuru. Сделано в Санкт-Петербурге с hireguru.ru