Чтобы создавать отличное программное обеспечение, мы должны иметь достаточно глубокое понимание внутренностей. Есть так много разработчиков, которые не имеют ни малейшего представления о том, что происходит «под одеялом».
Поэтому в этой статье я постараюсь объяснить внутреннюю работу JavaScript самым простым способом.

Прежде чем мы начнем, вот вам факт:


Знаете ли вы, что JavaScript поддерживает современный пользовательский интерфейс с сенсорным экраном для космического корабля SpaceX Dragon?

Да, JavaScript фактически использовался для создания пользовательского интерфейса внутри космического корабля SpaceX.

Среда выполнения JavaScript

JavaScript работает в среде, называемой Среда выполнения JavaScript. Чтобы использовать JavaScript, вы в основном устанавливаете эту среду, а затем можете просто использовать JavaScript.
Итак, чтобы использовать JavaScript, вы устанавливаете Браузер или же NodeJS оба из которых являются средой выполнения JavaScript.

В зависимости от контекста среда выполнения может принимать различные формы; например, среда выполнения в браузере сильно отличается от среды Node.js. Поскольку эти различия в основном касаются уровня реализации, большинство следующих концепций остаются применимыми.

JS-движок

JavaScript-движок является частью среды выполнения JavaScript, и каждый веб-браузер имеет собственную версию движка JS.
Здесь следует отметить, что JavaScript можно использовать только для написания логики, такой как например: циклы for, циклы while, if-else и т. д.
Пример, Хром использует Двигатель V8 JS который был разработан Chromium Project. Fire Fox использует ПаукОбезьяна который был впервые написан Брендан Эйх в Нетскейп и теперь поддерживается людьми из Мозилла. Apple Сафари использует Вебкит.

Целью движка JavaScript является преобразование исходного кода, который пишут разработчики, в машинный код, который позволяет компьютеру выполнять определенные задачи.
JS Engine состоит из куча и стек вызовов

кучатакже называемая «кучей памяти», представляет собой раздел неструктурированной памяти, который используется для размещения объектов и переменных.

Стек вызовов — это структура данных, которая отслеживает, где мы находимся в программе, и работает по принципу «последним пришел — первым ушел». Каждая запись в стеке называется кадром стека. Это означает, что движок фокусируется на фрейме на вершине стека и не будет переходить к следующей функции, пока функция над ним не будет удалена из стека.

Когда движок JS входит в функцию, он помещается в стек. Когда функция возвращает значение или отправляется в Веб-APIэто выскочил стек. Если функция явно не возвращает значение, то движок вернет значение undefined и также вытолкнет функцию из стека. Именно это подразумевается под термином «JavaScript выполняется синхронно»; он однопоточный, поэтому может выполнять только одну операцию за раз.

Среда выполнения JavaScript также предоставляет API которые не являются частью JS Engine. У нас есть разные API для разных сред выполнения. Таким образом, такие функции, как console.log а также ДОМ предоставляются не JavaScript, а API среды выполнения браузеров и то же самое для установить время ожидания () этот метод предоставляется не JS, а средой выполнения NodeJS.
Таким образом, JavaScript можно использовать только для написания логики с помощью JS Engine, но с помощью API у нас есть гораздо больше возможностей.

Электрон также является средой выполнения, используемой для создания настольных приложений.

Вот почему вы никогда не устанавливаете JavaScript удаленно, как Ява или же питон на вашем рабочем столе, потому что он предварительно установлен с браузером, NodeJS или другой средой выполнения JS.


Спасибо, что прочитали эту статью, следите за новостями