Чем 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 дня назад

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

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

Пожалуйста зарегистрируйтесь для отправки ответа. Это просто :)

Подпишись на наш телеграм канал, это поможет нам в продвижении сервиса @hireguru

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

  • РЕАЛЬНОЕ СОБЕСЕДОВАНИЕ НА FRONTEND РАЗРАБОТЧИКА. ПРИТВОРИЛСЯ ДЖУНОМТайм-код: #651 |Открыть видеоРЕАЛЬНОЕ СОБЕСЕДОВАНИЕ НА FRONTEND РАЗРАБОТЧИКА. ПРИТВОРИЛСЯ ДЖУНОМ
  • Собеседование frontend разработчикаТайм-код: #220 |Открыть видеоСобеседование frontend разработчика
  • 👨‍💻 Собеседование frontend junior+ разработчика (CSS, HTML, JS, React, Typescript, Redux)Тайм-код: #1801 |Открыть видео👨‍💻 Собеседование frontend junior+ разработчика (CSS, HTML, JS, React, Typescript, Redux)
  • Собеседование Junior Frontend разработчика в 17 летТайм-код: #384 |Открыть видеоСобеседование Junior Frontend разработчика в 17 лет
  • Собеседование cтажера Frontend разработчика.Тайм-код: #574 |Открыть видеоСобеседование cтажера Frontend разработчика.
  • FRONT-END РАЗРАБОТЧИК: Как пройти СОБЕСЕДОВАНИЕ? Что нужно ЗНАТЬ?Тайм-код: #1195 |Открыть видеоFRONT-END РАЗРАБОТЧИК: Как пройти СОБЕСЕДОВАНИЕ? Что нужно ЗНАТЬ?
  • ❌[150k+] Собеседование в Москва Сити - АО ВРБ - Senior Frontend разработчик Vue JS [24.10.2019]Тайм-код: #169 |Открыть видео❌[150k+] Собеседование в Москва Сити - АО ВРБ - Senior Frontend разработчик Vue JS [24.10.2019]