Движок JavaScript — это компьютерная программа, которая выполняет код JavaScript и преобразует его в машинный код, понятный центральному процессору. В разных браузерах используются разные механизмы JavaScript, например V8 для Chrome, SpiderMonkey для Firefox и JavaScriptCore для Safari.

Механизм JavaScript состоит из нескольких компонентов, таких как синтаксический анализатор, интерпретатор, компилятор и оптимизатор. Синтаксический анализатор берет исходный код и создает абстрактное синтаксическое дерево (AST), которое представляет структуру и значение кода. Затем интерпретатор выполняет AST построчно и создает байтовый код, который является низкоуровневым представлением кода. Затем компилятор берет байт-код и переводит его в машинный код, который может работать на оборудовании. Оптимизатор применяет различные методы для повышения производительности кода, такие как встраивание функций, удаление мертвого кода и кэширование часто используемых значений.

Вот диаграмма, показывающая, как работает движок JavaScript:

В движке javascript в основном существует 2 компонента
=› Memory Heap — здесь происходит выделение памяти
=› Call Стек — здесь находятся кадры стека во время выполнения кода.

Это изображение среды выполнения javascript.

JavaScript-движок V8

Цель движка Javascript V8 заключалась в повышении производительности выполнения JavaScript внутри веб-браузеров. Под производительностью мы просто подразумеваем увеличение скорости, и v8 выполняет это, переводя код Javascript в эффективный машинный код вместо использования интерпретатора. Весь этот процесс реализуется с помощью компилятора JIT или Just-In-Time при выполнении. Этот поток выполнения осуществляется через все механизмы Javascript, но единственное отличие заключается в том, что V8 не создает байт-код или любую форму промежуточного кода.

JavaScript — это интерпретируемый язык, а не компилируемый. Такие программы, как C++ или Java, должны быть скомпилированы перед запуском. Исходный код передается через программу, называемую компилятором, которая переводит его в байт-код, который машина понимает и может выполнять. Напротив, в JavaScript нет этапа компиляции. Вместо этого интерпретатор в браузере читает код JavaScript, интерпретирует каждую строку и запускает его. Более современные браузеры используют технологию, известную как компиляция Just-In-Time (JIT), которая компилирует JavaScript в исполняемый байт-код непосредственно перед запуском.