JavaScript —
прототипно-ориентированный скриптовый язык программирования. Является диалектом
языка ECMAScript.
JavaScript обычно
используется как встраиваемый язык для программного доступа к объектам
приложений. Наиболее широкое применение находит в браузерах как язык сценариев
для придания интерактивности веб-страницам.
Основные архитектурные черты:
- динамическая типизация,
- слабая типизация, автоматическое управление памятью,
- прототипное программирование,
- функции как объекты первого класса.
На JavaScript
оказали влияние многие языки, при разработке была цель сделать язык похожим на
Java, но при этом лёгким для использования непрограммистами. Языком JavaScript
не владеет какая-либо компания или организация, что отличает его от ряда языков
программирования, используемых в веб-разработке.
Название
«JavaScript» является зарегистрированным товарным знаком компании Oracle
Corporation.
JavaScript обладает
рядом свойств объектно-ориентированного языка, но реализованное в языке
прототипирование обусловливает отличия в работе с объектами по сравнению с
традиционными объектно-ориентированными языками. Кроме того, JavaScript имеет
ряд свойств, присущих функциональным языкам — функции как объекты первого
класса, объекты как списки, карринг, анонимные функции, замыкания — что придаёт
языку дополнительную гибкость.
Несмотря на схожий с Си синтаксис, JavaScript по сравнению с языком Си имеет коренные отличия:
- объекты, с возможностью интроспекции;
- функции как объекты первого класса;
- автоматическое приведение типов;
- автоматическая сборка мусора;
- анонимные функции.
В языке отсутствуют такие полезные вещи, как:
- модульная система: JavaScript не предоставляет возможности управлять зависимостями и изоляцией областей видимости;
- стандартная библиотека: в частности, отсутствует интерфейс программирования приложений по работе с файловой системой, управлению потоками ввода/вывода, базовых типов для бинарных данных;
- стандартные интерфейсы к веб-серверам и базам данных;
- система управления пакетами, которая бы отслеживала зависимости и автоматически устанавливала их.
Структурно JavaScript можно представить в
виде объединения трёх чётко различимых друг от друга частей:
- ядро (ECMAScript),
- объектная модель браузера (Browser Object Model или BOM (de)),
- объектная модель документа (Document Object Model или DOM).
Если рассматривать JavaScript в отличных от
браузера окружениях, то объектная модель браузера и объектная модель документа
могут не поддерживаться.
Объектную модель документа иногда
рассматривают как отдельную от JavaScript сущность, что согласуется с
определением DOM как независимого от языка интерфейса документа.