- Появление в Netscape [ ред. | ред. код ]
- стандартизация [ ред. | ред. код ]
- Актуальное состояние [ ред. | ред. код ]
: императивная , элементы функциональной , объектно-ориентированный ( прототип-ориентированная ) Дата появления: 1995 создатели: Брендан Айк Разработчик: Netscape Communications Corporation , Mozilla Foundation Последний релиз: ECMAScript 2018 [1] (Июнь 2018) система типов : динамическая , утиная Основные реализации: V8 , SpiderMonkey , Rhino , KJS , Carakan , Chakra (Microsoft) Испытал влияние: Scheme , Self , Java , C , Python Влияние на: ActionScript , CoffeeScript , Dart , JScript .NET , Objective-J , QML , TypeScript , LiveScript страница интернет : developer.mozilla.org/docs/Web/JavaScript Не путать с Java .
JavaScript ( [ dʒ ɑː v ə ˌ s k r ɪ p t ] [4] , абр. JS) - динамичная, объектно-ориентированный [5] прототипная язык программирования . Реализация стандарта ECMAScript . Чаще всего используется для создания сценариев веб-страниц , Что дает возможность на стороне клиента (Устройства конечного пользователя) взаимодействовать с пользователем, управлять браузером, асинхронно обмениваться данными с сервером , изменять структуру и внешний вид веб-страницы .
JavaScript классифицируют как прототипную (подмножество объектно-ориентированной ) скриптовый язык программирования с динамической типизацией. Кроме прототипной, JavaScript также частично поддерживает другие парадигмы программирования ( императивную и частично функциональную ) И некоторые соответствующие архитектурные свойства, в частности: динамическая и слабая типизация , Автоматическое управление памятью, прототипная подражания , функции как объекты первого класса .
Язык JavaScript используется для:
Несмотря на схожесть названий, языка Java и JavaScript являются двумя различными языками, имеют отличную семантику , Хотя и имеют схожие черты в стандартных библиотеках и правилах именования. синтаксис обоих языков получен «в наследство» от языка С , Но семантика и дизайн JavaScript является результатом влияния как Self и Scheme . [6]
Появление в Netscape [ ред. | ред. код ]
1995 компания Netscape поставила задачу встроить язык программирования Scheme или «какую похожую» в браузер Netscape . Для этого был приглашен Брендан Айк , американский разработчик, специализирующийся на системном программировании . Также, для ускорения разработки, Netscape начали сотрудничество с компанией Sun Microsystems .
Со временем, концепция разрабатываемой языка программирования была расширена до возможности использования непосредственно в HTML -код страницы . Компании имели целью создать язык, который мог связать различные части веб-сайтов: изображений, Java-апплетов , объектной модели документа . Эта речь должна была стать удобной для веб-дизайнеров и неквалифицированных программистов. Рабочим названием нового языка была Mocha, которая была изменена на LiveScript в первых двух бета-версиях браузера Netscape 2.0. А несколько позже, пользуясь популярностью бренда Java, LiveScript был переименован в JavaScript и третья бета-версия (2.0B3) Netscape 2.0 уже вышла из современной названием [7] [8] . Для этого была приобретена соответствующая лицензия в компании Sun Microsystems , Обладавшей брендом Java .
1992 компанией Nombas была разработана скриптовый язык программирования Cmm ( англ . С-minus-minus, игра слов вокруг языка С ++ ), Которая позже была переименована в ScriptEase и могла встраиваться в веб-страницы. Существует ошибочное мнение, что JavaScript был создан под влиянием Cmm. На самом деле, Брендан Айк никогда не слышал о Cmm до того, как он создал LiveScript [9] . Позже, Nombas остановили разработку Cmm и начали использовать JavaScript, а впоследствии участвовали в группе с стандартизации JavaScript.
стандартизация [ ред. | ред. код ]
В ноябре 1996 года Netscape заявила, что отправила JavaScript в организацию Ecma International для рассмотрения языка как промышленного стандарта . В результате дальнейшей работы появилась стандартизованный язык с названием ECMAScript . В июне 1997 года, Ecma International опубликовала первую редакцию спецификации ECMA-262 . Год назад, в июне 1998 года, чтобы адаптировать спецификацию стандарту ISO / IEC-16262, были внесены некоторые изменения и выпущена вторая редакция. Третья редакция увидела свет в декабре 1999 года. [10]
Четвертая версия стандарта ECMAScript так и не была закончена и четвертая редакция не вышла [11] . Тем не менее, пятая редакция появилась в декабре 2009 года.
В июня 2015 года [12] вышла шестая версия, начиная с которой комитет ECMAScript принял решение перейти на ежегодные обновления и новая версия получила название ES2015. Она получила целый ряд нововведений, среди которых: объект Promise для удобного асинхронно выполнение кода, деструктуруюче присваивания , Стрелочные функции, функции-генераторы, шаблонные строки, операторы объявления переменных let и const и тому подобное.
Версия ES2016 вышла в июне 2016 года, среди нововведений оператор возведения в степень ** и метод Array.prototype.includes, который проверяет, содержится ли передан аргумент в массиве.
Версия ES2017, вышедшей в июне 2017 года и на сегодняшний день является актуальной версии стандарта добавила возможность использования асинхронно функций, «висячих» ком в параметрах функций, объект Atomics, несколько новых методов для работы со строками.
Актуальное состояние [ ред. | ред. код ]
JavaScript, пока, является одной из самых популярных языков программирования в интернете [13] . Но сначала много профессиональных программистов скептически относились к языку, целевая аудитория которой состояла из программистов-любителей [14] . появление AJAX изменила ситуацию и вернула внимание профессионального сообщества к языку, а последующие модификации языка по стандартам ES2015 и ES2017 внесли много полезных возможностей, которых не хватало для эффективного программирования. В результате, были разработаны и улучшены многие практик использования JavaScript (в частности, тестирование и налаживание ), Созданные библиотеки и фреймворки , Распространилось использование JavaScript вне браузера.
JavaScript имеет ряд свойств объектно-ориентированного языка , Но благодаря концепции прототипов поддержка объектов в ней отличается от традиционных языков ООП . Кроме того, JavaScript имеет ряд свойств, присущих функциональным языкам - функции как объекты первого класса , Объекты как списки, карринг , анонимные функции , замыкания (Closures) - что придает языку дополнительную гибкость.
JavaScript имеет C-образный синтаксис, но по сравнению с языком C имеет такие коренные отличия:
JavaScript содержит несколько встроенных объектов: Global, Object, Error, Function, Array, String, Boolean, Number, Math, Date, RegExp. Кроме того, JavaScript содержит набор встроенных операций, которые, грубо говоря, не обязательно являются функциями или методами, а также набор встроенных операторов, управляющих логикой выполнения программ. Синтаксис JavaScript в основном соответствует синтаксису языка Java (То есть, в конце концов, унаследованный от C), но упрощенный по сравнению с ним, чтобы сделать язык сценариев легкой для изучения. Так, например, декларация переменной не содержит ее типа, свойства также не типов, а декларация функции может стоять в тексте программы после нее.
Семантика языка сходна с семантикой языка Self .
Пример объявления и использования класса в JavaScript:
class MyClass {constructor () {this. myValue1 = 1; this. myValue2 = 2; }} Const mc = new MyClass (); mc. myValue1 = mc. myValue2 * 2;
Одна из популярных технологий, позволила сделать страницы более динамичными и обеспечить новые возможности - это динамическая загрузка и вставка данных в документ, получившая название AJAX .
При использовании в рамках технологии DHTML JavaScript код включается в HTML -код страницы и выполняется интерпретатором , Встроенным в браузер . Код JavaScript вставляется в теги <script> </ script> с обязательным по спецификации HTML 4.01 атрибутом type = "text / javascript", хотя в большинстве браузеров язык сценариев по умолчанию именно JavaScript.
Скрипт, выводящий модальное окно с классическим надписью «Hello, World!» Внутри браузера:
<Script type = "text / javascript"> alert ( 'Hello, World!'); </ Script>
Следуя концепции интеграции JavaScript в существующие системы, браузеры поддерживают включение скрипта, например, в значение атрибута события:
<A href = "delete.php" onclick = "return confirm ( 'Вы уверены?');" > Удалить </ a>
Здесь, после нажатия на ссылку, функция confirm ( 'Вы уверены?'); вызывает модальное окно с надписью «Вы уверены?», а return false блокирует переход по ссылке. Разумеется, этот код будет работать только если в браузере есть и включена поддержка JavaScript, иначе переход по ссылке состоится без предупреждения.
Есть и третья возможность подключения JavaScript - написать скрипт отдельным файлом, и подключить его с помощью конструкции:
<Script type = "text / javascript" src = "http: // Шлях_до_файла_зи_скриптом"> </ script>
При разработке больших и нетривиальных веб-приложений с использованием JavaScript, критически важен доступ к инструментам отладки . Поскольку браузеры, от разных производителей, несколько отличаются в поведении JavaScript и реализации Объектной модели документа Необходимо иметь отладчик для каждого браузера, если веб-приложения ориентированы на него.
В настоящее время Firefox , Opera , Google Chrome , Edge и Safari имеют отладчик для себя.
Также существуют такие полезные инструменты, как:
- ESLint - проверка кода, сканирует JavaScript программу в поисках проблемы кода
- Prettier - автоматическое форматирование кода в корректный вид;
- Babel - транспайлер Javascipt кода в более старых версий стандартов ECMAScript , Который помогает разработчикам использовать новейшие возможности языка для окружающих, не успело реализовать последний стандарт.
Поскольку JavaScript является интерпретатором, без строгой типизации, и может выполняться в различных средах, каждое со своими собственными особенностями совместимости, программист должен быть очень внимательным, и должен проверять, что его код выполняется как ожидается в широком перечне возможных конфигураций.
Каждый блок сценария интерпретатор разбирает отдельно. На веб-страницах, когда надо комбинировать блоки JavaScript и HTML , Синтаксические ошибки найти легче, если держать функции сценария в отдельном блоке кода, или (еще лучше) использовать многие малые связанных .js файлов. Таким образом синтаксическая ошибка повлечет «падения» целой страницы, и можно оказать помощь, элегантно выйдя со страницы.