Какие плюсы и минусы использования var в JavaScript?

«Какие плюсы и минусы использования var в JavaScript?» — вопрос из категории JavaScript, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В современном JavaScript (включая Node.js) использование var считается устаревшей практикой. Вот ключевые отличия:

Минусы var (почему не стоит использовать):

  • Отсутствие блочной области видимости: Переменная, объявленная с var, видна во всей функции, что приводит к классической проблеме в циклах с замыканиями.
    for (var i = 0; i < 3; i++) {
        setTimeout(() => console.log(i), 100); // Выведет 3, 3, 3
    }
    // С `let` вывод был бы 0, 1, 2
  • Поднятие (Hoisting) с инициализацией undefined: Переменная var поднимается в начало своей области видимости и инициализируется как undefined, что может маскировать ошибки.
    console.log(x); // undefined (не ошибка)
    var x = 5;
  • Возможность повторного объявления: Это может случайно перезаписать переменную.
    var name = 'Alice';
    var name = 'Bob'; // Разрешено, 'Alice' перезаписана

Плюсы var (скорее, исторические особенности):

  • Function-scoped область видимости: Иногда это может быть намеренным поведением, когда переменная должна быть доступна во всей функции.
  • Совместимость: Полная поддержка в очень старых средах выполнения.

Рекомендация для Node.js: Всегда используйте const для значений, которые не будут переназначаться, и let для переменных, которые будут меняться. Это делает код предсказуемым и предотвращает множество типичных ошибок.