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

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

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

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

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

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

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