В этой главе подробно рассматривается часто неверно понимаемый жизненный цикл переменных в лексической области действия JavaScript, с акцентом на том, как и когда идентификаторы становятся доступны для использования, – процесс, который в совокупности обозначается термином «поднятие». Поднятие, по сути, описывает операцию во время компиляции, при которой имена переменных автоматически регистрируются в начале соответствующих областей действия, в отличие от фазы выполнения во время выполнения. Между различными формами объявлений существует важное различие: формальные объявления функций выигрывают от поднятия функций, при котором идентификатор регистрируется и автоматически инициализируется ссылкой на функцию немедленно, что позволяет вызывать функцию во всей её области действия. В отличие от этого, объявления var поднимаются и автоматически инициализируются значением undefined в начале области действия (ближайшей функции или глобальной области действия), что может привести к ошибке TypeError при вызове в качестве функции до фактического присваивания во время выполнения. Объявления с let и const также поднимаются, но они присоединяются к области действия своего блока и, что особенно важно, пропускают этап автоматической инициализации в начале области действия. Эта отсрочка инициализации создаёт временную мёртвую зону (ВМЗ) — временное окно после входа в область видимости, где переменная существует, но к ней нет доступа, что приводит к ошибке ReferenceError при попытке сделать это до выполнения строки объявления. В главе также разъясняются правила повторного объявления, отмечая, что избыточные объявления var допустимы и рассматриваются как пустая операция (no-op), в то время как повторные объявления с использованием let или const (или их сочетание с var) вызывают ошибку SyntaxError. Более того, поскольку конструкции циклов, такие как while и for, создают новые экземпляры области видимости для каждой итерации при использовании let или const, переменные технически не переобъявляются. Наконец, общая структура цикла for не может использовать const для переменной счётчика, поскольку требуемое выражение приращения подразумевает переназначение, которое строго запрещено для констант, что накладывает чёткое техническое ограничение на использование этого ключевого слова.
📘 Читайте полные аннотации к каждой главе в блоге:
https://lastminutelecture.com
📘 Порекомендуете книгу? Оставьте свой отзыв здесь:
https://forms.gle/y7vQQ6WHoNgKeJmh8
Спасибо, что стали частью нашей небольшой семьи Last Minute Lecture!
⚠️ Отказ от ответственности: Эти конспекты созданы исключительно в образовательных и развлекательных целях. Они содержат содержательные комментарии и перефразированные обзоры, которые помогут студентам понять ключевые идеи из упомянутых учебников. Last Minute Lecture не связан, не спонсируется и не одобрен каким-либо издателем или автором учебников. Все названия учебников, имена и изображения обложек (если они указаны) используются в соответствии с принципами добросовестного использования исключительно для идентификации обсуждаемой работы. Некоторые фрагменты текста и повествования созданы с помощью инструментов на основе искусственного интеллекта для повышения доступности и согласованности. Несмотря на все усилия, предпринимаемые для обеспечения точности, эти материалы предназначены для дополнения, а не замены официальных учебных материалов, лекций или профессиональных учебных ресурсов. Всегда обращайтесь к оригинальному учебнику и рекомендациям преподавателя для получения полной и достоверной информации.
Информация по комментариям в разработке