Мы всегда помещаем или связываем некоторый код JavaScript на нашей HTML-странице и запускаем его. Но мы очень редко задумываемся о процессе его выполнения. Чтобы правильно понимать JavaScript, мы должны знать механизм его выполнения. Возможно, нам не нужно знать способ преобразования нашего кода в машинные инструкции или базовую программу для синтаксического / лексического анализа. Но мы должны знать, когда и как выполняется фрагмент кода? Какова область видимости переменной? Мы должны знать этапы выполнения нашего кода. Мы должны понимать основные строительные блоки выполнения кода JavaScript. У нас должен быть хотя бы высокий уровень понимания JavaScript Engine. В этой серии статей я постараюсь объяснить это шаг за шагом. Итак, не теряя много времени, приступим.

Обзор движка JavaScript

Механизм JavaScript - это программа или интерпретатор, которые считывают наш код JavaScript, создают машинный код и, наконец, запускают машинный код. Он используется в средах выполнения JavaScript, таких как веб-браузеры, Node.js или даже Java Runtime Environment (JRE). Как и любой другой интерпретатор, его задача - читать и выполнять код.

Обзор среды выполнения JavaScript

Еще одно программное обеспечение - среда выполнения JavaScript. Он использует движок JavaScript и при необходимости предоставляет некоторые дополнительные функции. Самый распространенный пример среды выполнения - это веб-браузер. Вероятно, вторая по популярности среда выполнения - это Node.js.

Движок и среда выполнения работают вместе

Итак, у нас есть два игрока. Движок JavaScript и среда выполнения JavaScript. Но кто что делает? Приведем пример.

Перед выполнением фрагмента кода JavaScript сначала должен его понять. Понимание кода означает анализ кода на соответствие грамматике языка JavaScript и определение формата предложения. Понимание кода - это многоэтапный процесс. Понимание приведенного выше кода приведет к:

  • Строки с 1 по 3 - это объявление функции с именем printDateTime.
  • Функция printDateTime не принимает параметров.
  • Строка 2 - это вызов метода log объекта console с одним параметром.
  • new Date() в строке 2 - это вызов конструктора объекта.
  • Строка Current Date/Time is и выходной объект из new Date() будут добавлены.
  • Строки 5 и 6 - это объявления и присвоения двух переменных с двумя разными значениями.
  • Строка 7 - это вызов функции setTimeout с двумя параметрами.

После понимания кода JavaScript должен выполнить некоторые другие задачи для выполнения кода. Задачи могут быть такими, как разрешение функций (поиск необходимых функций), определение значений параметров, разрешение доступных значений функции, управление возвратами, упорядочение вызовов функций, сбор памяти мусора, подготовка машинных инструкций. Для JavaScript есть еще много вещей, которые нужно сделать.

Все вышеперечисленное - работа движка. Но что делает браузер или любая другая среда выполнения? Они предоставляют API для связи с внешним миром. Предоставьте API-интерфейсы для общих функций. Эти API-интерфейсы в основном реализованы с помощью низкоуровневых языков, таких как C / C ++. В основном предоставляемые API определяют функциональные возможности платформы. Браузер предоставляет API-интерфейсы, которые применимы для запуска программы в браузере. API-интерфейсы браузера похожи на API-интерфейсы для управления DOM, API-интерфейсы окон и документов. С другой стороны, Node.js предоставляет API-интерфейсы, применимые для серверного приложения. Такие API-интерфейсы похожи на API-интерфейсы запросов, процессов и буферов.

Заключение

Двигатель и среда выполнения работают вместе. Движок управляет всем, чтобы генерировать машинные инструкции. Среда выполнения предоставляет API-интерфейсы для связи с внешним миром, например с консолью браузера, DOM или устройством геолокации. В следующей статье я остановлюсь на двигателе.

Статьи из этой серии

  1. Двигатель против времени выполнения
  2. Рабочий процесс JavaScript Engine