Ответ вслух Junior Области видимости и замыкания спрашивают часто обновлено

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

Вопрос

Чем отличаются var, let и const? Что из них вы используете и почему?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Образцовый ответ: «Главное отличие в области видимости: var видна во всей функции, а let и const только внутри блока, например внутри if или тела цикла. Второе: подъём.

Что должно прозвучать в ответе

  • `var` с функциональной областью, `let` и `const` с блочной

  • `var` поднимается с `undefined`, `let`/`const` попадают в TDZ

  • `var` можно объявить повторно, `let`/`const` нет

  • `const` запрещает переприсваивание, но не изменение объекта

  • `var` на верхнем уровне скрипта становится свойством `window`

  • По умолчанию `const`, `let` для изменяемых, `var` не использую

Что могут спросить следом

  • Как сделать объект действительно неизменяемым?
  • Почему let в цикле for ведёт себя иначе, чем var?
  • Поднимается ли let?

Разбор

Образцовый ответ: «Главное отличие в области видимости: var видна во всей функции, а let и const только внутри блока, например внутри if или тела цикла. Второе: подъём. Все три объявления регистрируются заранее, но var сразу получает undefined, а let и const до своей строки в временной мёртвой зоне, и обращение к ним бросает ReferenceError. Третье: var можно объявить повторно, let и const нет, это ошибка разбора. const запрещает переприсвоить переменную, но объект внутри менять можно; для неизменяемости есть Object.freeze, и то поверхностный. Ещё var на верхнем уровне скрипта становится свойством window. В цикле for с let на каждой итерации создаётся новая привязка, поэтому колбэки видят разные значения. Я пишу const по умолчанию, let когда значение реально меняется, а var не использую совсем: его поведение источник багов».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.