Java Script
Учебник по JAVASCRIPT
JavaScript — скриптовый язык, чаще всего использующийся при создании сценариев поведения браузера, встраиваемых в веб-страницы. Является одной из реализаций языка ECMAScript.
Название «JavaScript» является зарегистрированным товарным знаком компании Sun Microsystems, Inc.
История
Предпосылкой появления языка JavaScript стало желание дать разработчикам HTML-документов возможность динамически управлять всеми объектами, описываемыми в коде Web-страницы. Разработанный Бренданом Айхом из компании Netscape язык был включён в браузер Netscape Navigator начиная с версии 2.0B3 в декабре 1995 года. Первоначально язык назывался Mocha, затем он был переименован в LiveScript. На синтаксис оказали влияние языки Си и Java, и, поскольку технология Java была в то время очень модной, LiveScript переименовали в JavaScript, получив соответствующую лицензию у Sun. Реализация компании Microsoft получила название JScript. Internet Explorer поддерживает JScript, начиная с версии 3.0, выпущенной в августе 1996 года. Стандартизация языка ассоциацией ECMA инициирована компанией Netscape. Стандартизированная версия имеет название ECMAScript, описывается стандартом ECMA-262. Первая версия данного стандарта примерно соответствовала JavaScript 1.1.
Возможности языка
JavaScript обладает рядом свойств объектно-ориентированного языка, но благодаря прототипированию поддержка объектов в нём отличается от традиционных ОО языков. Кроме того, JavaScript имеет ряд свойств, присущих функциональным языкам — функции как объекты первого уровня, объекты как списки, карринг (currying), анонимные функции, замыкания (closures) — что придаёт языку дополнительную гибкость.
JavaScript имеет C-подобный синтаксис, но по сравнению с языком С имеет следующие коренные отличия: объекты, с возможностью интроспекции и динамического изменения типа через механизм прототипов; функции как объекты первого класса; автоматическое приведение типов; автоматическая сборка мусора; анонимные функции.
Семантика и синтаксис
Синтаксис языка JavaScript во многом напоминает синтаксис Си и Java, семантически же язык гораздо ближе к Self, Smalltalk или даже Лиспу [Спецификация 1].
В JavaScript: все идентификаторы регистрозависимы, в названиях переменных можно использовать буквы, подчёркивание, символ доллара, арабские цифры, названия переменных не могут начинаться с цифры, для оформления однострочных комментариев используются //, многострочные и внутристрочные комментарии начинаются с /* и заканчиваются */.
Структура языка
Структурно JavaScript можно представить в виде объединения трёх чётко различимых друг от друга частей: ядро (ECMAScript), объектная модель документа (Document Object Model или DOM), объектная модель браузера (Browser Object Model или BOM).
Ядро
ECMAScript не является браузерным языком и на самом деле в нём не определяются методы ввода и вывода информации[3]. Это скорее основа для построения скриптовых языков. Спецификация ECMAScript описывает типы данных, инструкции, ключевые и зарезервированные слова, операторы, объекты, регулярные выражения, не ограничивая авторов производных языков от расширения их новыми составляющими.
Типы данных
В JavaScript поддерживаются пять примитивных типов данных: числовой (Number), строковый (String), логический (Boolean), нулевой (Null), неопределённый (Undefined).[Спецификация 2]
Числовой тип данных в JavaScript соответствует 64-битному формату чисел с плавающей запятой, определённому стандартом IEEE 754-2008 за исключением того, что различные значения Not-a-Number, определяемые в стандарте[4], представляются в данном языке единственным специальным значением NaN[Спецификация 3].
Нулевой и неопределённый типы данных Дэвидом Флэнаганом неформально причисляются к тривиальным типам, поскольку каждый из них определяет только одно значение.
Также в языке имеется составной тип данных: объектный (Object).
Помимо перечисленных шести типов данных в JavaScript имеется поддержка ещё трёх, используемых исключительно для хранения промежуточных результатов вычисляемых выражений[Спецификация 4]: ссылочный (Reference), списочный (List), заключительный (Completion).
При публикации использованы материалы Википедии