Сборщик мусора пытается освободить память, которая была выделена программой, но больше не используется — это также называется мусором.
JS Engine автоматически удаляет неиспользуемые переменные и прочее
Интерпретируемая и своевременная компиляция
Движок V8 использует как компилятор, так и интерпретатор и следует компиляции Just in Time (JIT) для повышения производительности.
Двигатель V8 изначально использует интерпретатор для интерпретации кода. При дальнейшем выполнении механизм V8 находит шаблоны, такие как часто выполняемые функции, часто используемые переменные, и компилирует их для повышения производительности.
Допустим, производительность падает или параметры, переданные в функцию, меняют свой тип, тогда V8 просто декомпилирует скомпилированный код и возвращается к интерпретатору.
Мультипарадигма
JS основан на нескольких парадигмах, таких как: - 1. Процедурная 2. OOPS 3. Функциональное программирование
Объектно-ориентированный на основе прототипа
В Js все, кроме примитивов (число, строка и т. д.), является объектами.
У каждого объекта в JavaScript есть встроенное свойство, которое называется прототипом. Прототип сам по себе является объектом, поэтому прототип будет иметь свой собственный прототип, создавая так называемую цепочку прототипов.
Функции первого класса
Функция первого класса. Говорят, что язык программирования имеет функции первого класса, если функции в этом языке рассматриваются как другие переменные. Таким образом, функции могут быть назначены любой другой переменной, переданы в качестве аргумента или могут быть возвращены другой функцией.
Динамический
Когда вы объявляете переменную, вам не нужно указывать тип этой переменной. Механизм Javascript делает вывод, к какому типу относится эта переменная, на основе значения, присвоенного во время выполнения.
Переменные не имеют типа данных, и тип данных можно изменить во время выполнения.
Однопоточный
JS работает в одном потоке и обрабатывает несколько операций только в одном потоке.
Javascript — это однопоточный язык. Это означает, что у него есть один стек вызовов и одна куча памяти. Как и ожидалось, он выполняет код по порядку и должен завершить выполнение фрагмента кода, прежде чем перейти к следующему.