Нет такой вещи, как подъем.Подъем - это просто побочный эффект фазы компиляции, которая возникает, и тот факт, что Javascript имеет лексическую область видимости.Когда компилятор приходит к фазе компиляции, он помещает все объявления переменных и функций в память, поскольку он вычисляет лексические области действия, которые существуют в программе.Но нет hoisting
функции или ключевого слова или модуля.На самом деле он даже не упоминался в спецификации Ecmascript до выхода es2015.
В конце концов, подъем - это одно из тех слов на миллион долларов, которые мы все используем, часто потому, что его проще использовать, чем объяснять и обсуждать процесс компиляции, который проходит javascript.
Я бы посоветовал вам либо прочитать спецификации Ecmascript, либо поработать над источником движка javascript, таким как v8, либо почитать работу Кайла Симпсона.Он написал большую серию под названием «Не знаю, JS».
Надеюсь, это поможет!
Подъем - это термин, который вы не найдете в какой-либо нормативной спецификации, предшествующей спецификации языка ECMAScript® 2015.Подъем был задуман как общий способ размышления о том, как контексты выполнения (особенно фазы создания и выполнения) работают в JavaScript.Тем не менее, концепция может сначала немного запутать.Концептуально, например, строгое определение подъема предполагает, что объявления переменных и функций физически перемещаются в начало вашего кода, но на самом деле это не так.Вместо этого объявления переменных и функций помещаются в память на этапе компиляции, но остаются именно там, где вы ввели их в свой код. <- Из документации Mozilla </p>
https://developer.mozilla.org/en-US/docs/Glossary/Hoisting