Вот некоторые ключевые слова, описывающие 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 с одним потоком.