JavaScript

Материал из Циклопедии
Перейти к навигации Перейти к поиску
Логотип

JavaScript — динамический объектно-ориентированный язык программирования, созданный в 1995 году.

История[править]

Появление в Netscape[править]

В 1995 году компания Netscape поставила задачу встроить язык программирования Scheme или «какую похожую» в браузер Netscape. Для этого был приглашен Брендан Айк, американский разработчик, специализирующийся на системном программировании. Также, для ускорения разработки, Netscape начали сотрудничество с компанией Sun Microsystems.

Со временем, концепция разрабатываемой языка программирования была расширена до возможности использования непосредственно в HTML-код страницы.[1][2] Компании имели целью создать язык, который мог связать различные части веб-сайтов: изображений, Java-апплетов, объектной модели документа. Эта речь должна была стать удобной для веб-дизайнеров и неквалифицированных программистов. Рабочим названием нового языка была Mocha, которая была изменена на LiveScript в первых двух бета-версиях браузера Netscape 2.0. А несколько позже, пользуясь популярностью бренда Java, LiveScript был переименован в JavaScript и третья бета-версия (2.0B3) Netscape 2.0 вышла с современным названием. Для этого была приобретена соответствующая лицензия в компании Sun Microsystems, которая владела брендом Java.

В 1992 году компанией Nombas был разработан скриптовый язык программирования Cmm (С-minus-minus, игра слов вокруг языка С++), которая позже была переименована в ScriptEase и мог встраиваться в веб-страницы. Существует ошибочное мнение, что JavaScript был создан под влиянием Cmm. На самом деле, Брендан Айк никогда не слышал о Cmm до того, как он создал LiveScript. Позже, Nombas остановил разработку Cmm и начал использовать JavaScript, а затем участвовал в группе по стандартизации JavaScript.

Стандартизация[править]

В ноябре 1996 года Netscape заявила, что отправила JavaScript в организацию Ecma International для рассмотрения языка как промышленного стандарта. В результате дальнейшей работы появилась стандартизованный язык с названием ECMAScript. В июне 1997 года, Ecma International опубликовала первую редакцию спецификации ECMA-262 . Год назад, в июне 1998 года, чтобы адаптировать спецификацию стандарту ISO / IEC-16262, были внесены некоторые изменения и выпущена вторая редакция. Третья редакция увидела свет в декабре 1999 года.[3]

Четвертая версия стандарта ECMAScript так и не была закончена и четвертая редакция не вышла.[4] Тем не менее, пятая редакция появилась в декабре 2009 года.

На сегодня, актуальная версия стандарта — 5.1. Она была выпущена в июне 2011 года.[5]

Актуальное состояние[править]

JavaScript является одним из самых популярных языков программирования в Интернете. Но сначала много профессиональных программистов скептически относились к языку, целевая аудитория которой состояла из программистов-любителей.[6] Появление AJAX изменило ситуацию и вернула внимание профессионального сообщества к языку. В результате, были разработаны и улучшены многие практик использования JavaScript (в частности, тестирование и отладка), созданные библиотеки и фреймворки, распространилось использование JavaScript вне браузера.

О языке[править]

Типы данных в JS

JavaScript обладает рядом свойств объектно-ориентированного языка, но благодаря концепции прототипов поддержка объектов в ней отличается от традиционных языков ООП. Кроме того, JavaScript имеет ряд свойств, присущих функциональным языкам — функции как объекты первого класса, объекты как списки, карринг (currying), анонимные функции, замыкания (closures), что придает языку дополнительную гибкость.

JavaScript содержит несколько встроенных объектов: Global, Object, Error, Function, Array, String, Boolean, Number, Math, Date, RegExp. Кроме того, JavaScript содержит набор встроенных операций, которые, строго говоря, не обязательно являются функциями или методами, а также набор встроенных операторов, управляющих логикой выполнения программ. Синтаксис JavaScript в основном соответствует синтаксису языка Java (то есть, в конце концов, унаследованный от C), но упрощенный по сравнению с ним, чтобы сделать язык сценариев легким для изучения. Так, например, декларация переменной не содержит ее типа, а декларация функции может стоять в тексте программы после нее.

Семантика языка сходна с семантикой языка Self.

Исходный код и скриншот JavaScript-программы, выполняемой с помощью Seed

Одна из популярных технологий, позволившая сделать страницы более динамичными и обеспечить новые возможности — это динамическая загрузка и вставка данных в документ, получившая название AJAX.

Использование в HTML[править]

При использовании в рамках технологии DHTML JavaScript код включается в HTML-код страницы и выполняется интерпретатором, встроенным в браузер. Код JavaScript вставляется в теги <script></script> с обязательным по спецификации HTML 4.01 атрибутом type="text/javascript", хотя в большинстве браузеров язык сценариев по умолчанию именно JavaScript.

Скрипт, который выводит модальное окно с надписью «Hello, World!» внутри браузера:

  • alert('Hello, World!');

Следуя концепции интеграции JavaScript в существующие системы, браузеры поддерживают включение скрипта, например, в значение атрибута события:

  • <a href="delete.php" onclick="return confirm('Вы уверены?');">Удалить</a>

Здесь при нажатии на ссылку функция confirm ('Вы уверены?'); вызывает модальное окно с надписью «Вы уверены?», а return false; блокирует переход по ссылке. Разумеется, этот код будет работать только если в браузере есть и включена поддержка JavaScript, иначе переход по ссылке состоится без предупреждения.

Есть и третья возможность подключения JavaScript — написать скрипт в отдельном файле, а спустя подключить его при помощи конструкции:

Отладка[править]

При разработке больших и нетривиальных веб-приложений с использованием JavaScript, критически важен доступ к инструментам отладки. Поскольку браузеры от разных производителей несколько отличаются в поведении JavaScript и реализации объектной модели документа, приходится работать с отладчиком для конкретных браузеров.

В настоящее время Internet Explorer, Firefox, Opera, Google Chrome и Safari имеют свой отладчик.

Также существуют несколько инструментов, как свободных, например, JSLint, инструмент проверки качества кода, сканирует JavaScript программу, ищет проблемы кода, так и коммерческих продуктов, наподобие инструмента под названием JavaScript Debugger.

Поскольку JavaScript является интерпретатором, без строгой типизации, и может выполняться в различных средах, каждое со своими собственными особенностями совместимости, программист должен быть очень внимательным, и должен проверять, что его код выполняется как ожидается в широком перечне возможных конфигураций. Очень часто бывают случаи, когда скрипт, прекрасно работает в одной среде, выдает некорректные результаты в другом.

Каждый блок сценария интерпретатор разбирает отдельно. На веб-страницах, когда надо комбинировать блоки JavaScript и HTML, синтаксические ошибки найти легче, если держать функции сценария в отдельном блоке кода, или (еще лучше) использовать много малых связанных .js файлов.

Источники[править]

Ссылки[править]

 
Используемые
в разработке

Ада A+ APL Atlast Forth AWL Язык ассемблера ActionScript ABAP/4 AutoIt AWK BeanShell Бейсик Си Кобол C++ C# Clarion Clojure ColdFusion Common Lisp D dBase Delphi DuAL Eiffel Erlang Euphoria F# Форт Фортран Gambas Go Groovy HAL/S Haskell IBM PL/S Icon IridiumJava JavaScript Limbo Lua Модула-3 Object Pascal Objective-C OCaml Oz Parser Паскаль Компонентный Паскаль Perl Pixilang PHP PowerBASIC Python ПЛ/1 Пролог Qi Ruby Scala Scheme Seed7 Smalltalk SQL PL/SQL Tcl TouchDesigner Vala Visual Basic (.NET) • X-Robot

Академические

Agda Clean Curry Idris Лого ML Оберон Planning C РЕФАЛ Симула

IEC 61131-3

Instruction List ST FBD Ladder Diagram (LD) • SFC

Прочие

Алгол Алгол 68 Модула-2 Миранда Hope НОРМИН Санда

Эзотерические

HQ9+/HQ9++ • INTERCAL Brainfuck Befunge Malbolge Piet Spoon Unlambda Whitespace FALSE LOLCODE Глагол

Визуальные

G (LabVIEW) • Microsoft VPL Sikuli VisSim Алиса ДРАКОН Скретч

Прочее

ДинамическиеКомпилируемыеС ключевыми словами не на английском языке С C-style синтаксисом СинтаксисYoptaScript

Категория Языки программирования

 
Глобально

Всемирная паутина (Веб 1.0Веб 2.0Веб 3.0) • Семантическая паутинаИнтернет (в России) • Русскоязычный ИнтернетРунет (термин) • Провайдер

Локально

ДоменСайтПорталСтраницаСлужбаКольцо

Виды сайтов
и сервисов

Виртуальный атласБаннерная сетьБиблиотекаБлог (платформа) • ВидеохостингВикиСайт-визиткаВопрос-ответЗакладкиСлужбы знакомствБраузерная играКаталог ресурсовИнтернет-магазинМикроблогНовостной сайтПоисковая системаПорносайтВеб-почтаСоциальная сетьТамблелогBitTorrent-трекерФайлообменникФорум (СервисИмиджборд) • ФотохостингЧат

Создание и
обслуживание

МастерРазработкаДизайнВёрсткаПрограммированиеЮзабилитиОпыт взаимодействияПродвижение сайтаПоисковая оптимизация (SEO) • ХостингСистемный администраторМодераторУчётная записьОнлайн-трансляцияАвторизация

Типы макетов,
страниц, сайтов

СтатическийДинамическийФиксированныйРезиновыйДинамично эластичныйАдаптивный

Техническое

Веб-сервер (сравнение) • Браузер (сравнение) • CookieDNSCMFCMSHTTP (ответызаголовки) • SPDYQUICCGIHTMLXHTMLIP-адресCSSJavaScriptDHTMLCookieDOMXMLAJAXJSONFlashRSSTCP/IPAtomМикроформатfavicon.ico • robots.txtSitemapsVPNКарта сайта.htaccess

Маркетинг

АффилиатИнтернет-маркетингИнтернет-рекламаБаннерКонтекстная рекламаТизерУправление интернет-магазиномКиберсквоттинг

Социум и культура

БлогосфераИнтернет-правоИнтернет-сообщество (районное) • Сетевая литератураХейтерРоберт Эллиот Кан