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

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

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

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

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

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

Поднятие (Hoisting)

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

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

Создание в глобальном контексте

- var: Переменные, объявленные с помощью var в глобальном контексте, становятся свойствами глобального объекта (например, window в браузерах).

- let: Переменные, объявленные с помощью let в глобальном контексте, не становятся свойствами глобального объекта.

Примеры

if (true) {
  var varVariable = "Я доступен везде в функции";
  let letVariable = "Я доступен только в этом блоке";
}

console.log(varVariable); // Работает, потому что var имеет функциональную область видимости

console.log(letVariable); // Ошибка, потому что let имеет блочную область видимости

console.log(a); // undefined из-за поднятия

var a = 3;

console.log(b); // ReferenceError из-за временной мертвой зоны

let b = 4;

let предоставляет более строгую и предсказуемую область видимости переменных, что улучшает управляемость кода и снижает вероятность ошибок, связанных с неожиданным доступом или изменением данных. Хотя var может быть полезен, когда требуется функциональная область видимости, в современных практиках предпочтительными являются let и const (для объявления констант).

Таким образом, var объявляет переменную, доступную во всей функции, тогда как let ограничивает видимость переменной только тем блоком, в котором она объявлена.

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

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

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

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

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

Менторы

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

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

    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