Вот некоторые ключевые слова, описывающие JavaScript. Каждый из них будет подробно рассмотрен в серии статей ‹Как JavaScript работает за кулисами›.

Ключевые слова, описывающие JavaScript

  • Язык высокого уровня
  • Вывоз мусора
  • Интерпретируется или своевременно компилируется
  • Мультипарадигма
  • Объектно-ориентированный на основе прототипа
  • Первоклассные функции
  • Динамический
  • Однопоточный
  • Неблокирующий цикл событий

Язык высокого уровня

  • С low-level languages, таким как C, разработчикам приходится вручную управлять аппаратными ресурсами, например, выделяя память компьютера при создании новой переменной.
  • С другой стороны, high-level languages, такие как JavaScript и Python, имеют так называемые abstractions, освобождающие разработчиков от управления ресурсами. Garbage-collection — это один из инструментов, который отнимает у нас, разработчиков, управление памятью.

Вывоз мусора

  • Алгоритм внутри движка JS, который автоматически удаляет старые, неиспользуемые объекты из памяти компьютера.

Интерпретируемый или своевременно компилируемый язык

  • Каждая программа читается нулями и единицами, machine code.
  • Код, который мы пишем, должен быть переведен (преобразован) в машинный код. Мы называем этот процесс compiling. Компиляция происходит в движке JavaScript.

Мультипарадигма

  • Парадигма — это подход и способ структурирования кода, который определяет ваш стиль и технику кодирования.
  • Три популярные парадигмы в программировании — это Procedural programming, Object-oriented programming(OOP) и Functional Programming(FP).
  • Благодаря гибкому и универсальному JavaScript мы можем использовать любую парадигму, какую захотим.

Объектно-ориентированный на основе прототипа

  • Почти все типы данных в JavaScript являются объектами, за исключением примитивных типов данных, таких как числа и строки.
  • Массив, например, является объектом. У них есть prototype, который содержит все методы массива. Из-за prototypal inheritance массивы, которые мы создаем, наследуют методы от прототипа.

Первоклассные функции

  • В языке с first-class functions функции просто рассматриваются как переменные. Мы можем передавать их в другие функции (callback) и возвращать из функций.

Динамический язык

  • JavaScript — это язык с динамической типизацией.
  • При создании переменной нет определения типа данных. Типы становятся известны во время выполнения.
  • Также автоматически изменяется тип данных переменной.
  • по сравнению с TypeScript

Однопоточная, неблокирующая модель параллелизма цикла событий

  • Concurrency model означает, как движок JavaScript обрабатывает несколько задач, выполняемых одновременно.
  • Зачем нам это нужно? Поскольку JavaScript выполняется в одном single thread, он может выполнять только одну операцию за раз. Нам нужен способ обрабатывать несколько вещей, происходящих одновременно.
  • Thread — это набор инструкций, которые выполняются в ЦП компьютера. Именно здесь наш код фактически выполняется в процессоре машины.
  • Тогда как насчет длительных задач, таких как выборка данных с удаленного сервера? Он может заблокировать единственный поток, в котором выполняется код. Однако нам нужно неблокирующее поведение.
  • Для этого JavaScript использует event-loop. Цикл событий принимает длительные задачи, выполняет их в «фоновом режиме» и возвращает их в основной поток после их завершения.
  • Вот как работает неблокирующая модель параллелизма цикла событий JavaScript с одним потоком.

Ссылка