Перейти к содержанию
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
Логотип бренда
Категории
  1. Главная
  2. Категории
  3. Языки программирования
  4. JavaScript
  5. Чем отличаются переменные var, let, const.

Чем отличаются переменные var, let, const.

Запланировано Прикреплена Закрыта Перенесена JavaScript
javascript
1 Сообщения 1 Постеры 12 Просмотры 1 Отслеживают
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • evoE Не в сети
    evoE Не в сети
    evo
    javascript
    написал отредактировано
    #1

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

    Они все "создают переменные", но работают по-разному. Разберёмся, чем.


    1. var

    var name = "Анна";
    

    🔹 Область видимости: функциональная (а не блочная).
    Это значит, что var видна внутри всей функции, даже если объявлена в if или for.

    if (true) {
      var x = 10;
    }
    console.log(x); // 10 — работает! (но это странно)
    

    🔹 Поднятие (hoisting): переменная "всплывает" в начало области видимости, но со значением undefined.

    console.log(y); // undefined, а не ошибка
    var y = 5;
    

    🔹 Можно переопределять и перезаписывать — даже случайно.

    👉 Минус: легко получить утечки, баги и непредсказуемое поведение.


    2. let — современная замена var

    let age = 25;
    

    🔹 Область видимости: блочная ({}), то есть только внутри if, for, function и т.п.

    if (true) {
      let z = 20;
    }
    console.log(z); // Ошибка! z не существует здесь
    

    🔹 Тоже всплывает, но в зону "temporal dead zone" — нельзя использовать до объявления.

    console.log(name); // Ошибка: Cannot access 'name' before initialization
    let name = "Петя";
    

    🔹 Можно менять значение, но нельзя переобъявлять в одном блоке.

    let a = 1;
    a = 2; // ок
    let a = 3; // ошибка!
    

    👉 Используйте let, если значение будет меняться.


    3. const — для неизменяемых значений

    const PI = 3.14;
    

    🔹 Блочная область видимости, как у let.

    🔹 Нельзя переопределять и нельзя оставлять без значения.

    const user; // Ошибка: Missing initializer
    user = "Том";
    

    🔹 Но! const не делает значение глубоко неизменяемым:

    const user = { name: "Лена" };
    user.name = "Маша"; // ок! Объект можно менять
    user = {}; // ошибка! Переприсвоить нельзя
    

    👉 Используйте const по умолчанию. Если нужно менять — тогда let.


    Сравнение в двух строках:

    Область видимости Можно менять Можно переобъявлять
    var функция да да
    let блок {} да нет
    const блок {} нет* нет

    * — нельзя переприсвоить, но можно менять свойства объектов


    ✅ Используйте const по умолчанию
    ✅ Если нужно менять значение — let
    🚫 Забудьте про var (если только не поддерживаете древний код)

    1 ответ Последний ответ
    1
    • evoE evo переместил эту тему из Языки программирования

    • evoE

      Различия между Arrow Function, Function Declaration и Function Expression

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript
      1
      0 Голоса
      1 Сообщения
      6 Просмотры
      Нет ответов
    • evoE

      Где изучать TypeScript?

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript typescript
      1
      1
      0 Голоса
      1 Сообщения
      5 Просмотры
      Нет ответов
    • evoE

      BigInt в JavaScript: как работать с большими числами

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript
      1
      0 Голоса
      1 Сообщения
      14 Просмотры
      Нет ответов
    • evoE

      Что такое JSON и как использовать JSON.stringify и JSON.parse

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript json
      1
      0 Голоса
      1 Сообщения
      10 Просмотры
      Нет ответов
    • evoE

      Методы регулярного выражения exec и test.

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript
      1
      0 Голоса
      1 Сообщения
      10 Просмотры
      Нет ответов
    • evoE

      Объяснение метода matchAll()

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript
      1
      0 Голоса
      1 Сообщения
      12 Просмотры
      Нет ответов
    • evoE

      Разница между функциональной и блочной видимостью

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript
      1
      0 Голоса
      1 Сообщения
      7 Просмотры
      Нет ответов
    • evoE

      Что такое строгий режим в программировании?

      Отслеживается Игнорируется Запланировано Прикреплена Закрыта Перенесена JavaScript javascript python
      1
      1 Голоса
      1 Сообщения
      10 Просмотры
      Нет ответов

    Контакты

    • forum@eduity.ru

    © 2025 eduity.ru, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы