Поднятие — это процесс помещения всех объявлений, таких как переменные и функции, в память на этапе компиляции.

Один из самых больших мифов, связанных с подъемом, заключается в том, что все объявления переменных и функций физически перемещаются в начало вашего кода. Это неправда.

Но вместо этого объявления переменных и функций помещаются в память на этапе компиляции и остаются именно там, где мы их ввели.

Итак, как именно поднимаются var/let/const и функции.

Вот несколько примеров:

Переменные, объявленные с помощью var, будут подняты и инициализированы с помощью undefined. Вот почему, когда мы пытаемся выполнить console.log(a) до инициализации, мы получаем undefined.

Переменные, объявленные с помощью let и const, поднимаются, но не инициализируются с помощью undefined. Доступ к ним возможен только после инициализации, иначе мы получим ReferenceError. Это связано с временной мертвой зоной, временным окном, в котором переменная существует, но все еще не инициализирована.

А как насчет функций?

Ну, это зависит от того, как мы объявляем наши функции. См. ниже.

Объявления традиционных функций будут полностью подняты, что сделает функцию доступной во всем коде.

Но с функциональными выражениями мы не можем вызвать функцию до того, как она будет объявлена. Вот почему 3 функции, объявленные с переменными, дают нам ошибку. Для устранения этих ошибок у нас есть два варианта. Либо измените выражение функции на традиционные объявления функций, либо вызовите функцию после объявлений.

Создавайте компонуемые приложения

Не создавайте веб-монолиты. Используйте Bit для создания и компоновки несвязанных программных компонентов — в ваших любимых фреймворках, таких как React или Node. Создавайте масштабируемые и модульные приложения с мощными и приятными возможностями разработки.

Перенесите свою команду в Bit Cloud, чтобы совместно размещать и совместно работать над компонентами, а также значительно ускорить, масштабировать и стандартизировать разработку в команде. Начните с компонуемых интерфейсов, таких как Design System или Micro Frontends, или исследуйте компонуемый сервер. Попробуйте →

Узнать больше