Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

Введение

Если HTML определяет структуру и контент веб-страницы, а CSS задает формат и внешний вид, то JavaScript добавляет интерактивность и создает богатые веб-приложения. 

Однако, под общим термином "JavaScript", в контексте веб-браузера, понимаются несколько очень разных вещей. Одна из них - это базовый язык программирования (ECMAScript), а другая - коллекция Web APIs, включая DOM (Объектно-ориентированная модель документа).

JavaScript, базовый язык программирования (ECMAScript)

Базовый язык JavaScript стандартизирован комитетом ECMA TC-39 как язык программирования под названием ECMAScript.

Базовый язык также испольуется в не-браузерном окружении, например, в node.js.

Что попадает под понятие ECMAScript?

Кроме прочего, ECMAScript определяет:

  • Синтаксис языка (правила парсинга, ключевые слова, порядок выполнения, инициализацию объекта литерала ...)
  • Механизм обработки ошибок (исключения, try/catch оператор,возможность создавать новые типы  ошибок)
  • Типы данных (логические, числа, строки, функции, объекты...)
  • Глобальные объект. В браузерах глобальным объектом является window, но ECMAscript определяет только те APIs, которые не являеются спецефическими для браузера, как parseIntparseFloatdecodeURIencodeURI...
  • Механизм прототипного наследования
  • Встроенные объекты и функции (JSON, Math, Array.prototype методы, методы самоанализа объекта...)
  • Строгий режим

Браузерная поддержка

На октябрь 2016, текущие версии основых веб-браузеров включали ECMAScript 5.1 и ECMAScript 2015, но более старые версии (все еще находящиеся в использовании) реализуют только ECMAScript 5.

Будущее

Главное 6-ое издание ECMAscript было официально одобрено и опубликовано как стандарт 17 июня 2015 года на собрании ECMA General Assembly. С тех пор выпуски ECMAscript публикуются на ежегодной основе.

API по интернационализации

Спецификация ECMAScript для API по интернационализации - дополнение к языковой спецификации ECMAScript, также стандартизированной Ecma TC39. API по интернационализации обеспечивают сопоставление (строковое сравнение), формативрование чисел, дат и времени для приложений на JavaScript, позволяя выбирать язык и проектировать функционал в зависимости от нужд. Начальный стандарт был одобрен в декабре 2012; статус реализации в браузерах ведется в документации Intl object. Спецификация по интернационализации сейчас также утверждается на ежегодной основе, и браузеры постоянно улучшают ее реализацию.

DOM APIs

WebIDL

Спецификация WebIDL является связующим звеном между технологиями DOM и ECMAScript.

Ядро DOM

Объектно-ориентированная модель документа (DOM) это кросс-платформенное, языково-независимое соглашение по представлению объектов и взаимодейстивию с ними в документах HTML, XHTML и XML. Объект в DOM-дереве может быть адрессован и обработан с помощью своих методов. Ядро Объектно-ориентированной модели документа стандартизируется W3C и определяет языково-независимые интерфейсы, абстрагирующие HTML и XML документы как объекты, и механизмы для управления этой абстракцией. Кроме прочих вещей, опреденных в DOM, можно также найти:

  • Структуру документа, древовидную модель, и архитектуру событий DOM в ядре DOMNodeElementDocumentFragmentDocumentDOMImplementationEventEventTarget, …
  • Менее строгое определение архитектуры событий DOM, также как и определенные события DOM.
  • Другие вещи, такие как DOM Traversal и DOM Range.

С точки зрения ECMAScript, объекты определенные в спецификации DOM называются объектами среды исполнения ("host objects").

HTML DOM

HTML, это язык разметки Web, который определен в терминах DOM/ is specified in terms of the DOM. Layered above the abstract concepts defined in DOM Core, HTML also defines the meaning of elements. The HTML DOM includes such things as the className property on HTML elements, or APIs such as document.body.

The HTML specification also defines restrictions on documents; for example, it requires all children of a ul element, which represents an unordered list, to be li elements, as those represent list items. In general, it also forbids using elements and attributes that aren't defined in a standard.

Другие API, заслуживающие внимания

  • Функции setTimeout и setInterval впервые были определены в интерфейсе Window в стандарте HTML.
  • XMLHttpRequest позволяет отправлять асинхронные HTTP запросы.
  • Объектная модель CSS абстрагировать CSS-правила как объекты
  • WebWorkers обеспечивает выполнение параллельных вычислений.
  • WebSockets обеспечивает низкоуровневое двунаправленое соединение.
  • Canvas 2D Context это API для рисования с помощью элемента <canvas>..

Поддержка браузерами

Каждый разработчик сталкивавшийся с DOM понимает как там все безнадёжно. Реализация той иной функциональности может отличаться, а следовательно и поведение. Главной причиной этого послужило то, что само описание спецификации DOM, было недостаточно ясным и подробным для разработчиков браузеров. Кроме того разные производители браузеров добавили несовместимые функциональности в своих браузеры или функциональности перекрывающие друг друга (например модель событий в IE). В данный момент консорциум W3C и частично WHATWG пытаюся описать детально поведение тех или иных функций, чтобы улучшить совместимость между браузерами. Следуя этой тенденции, можно надеятся что браузеры улучшат свои реализации основываясь на этих спецификациях.

Наиболее общий, но возможно не самый надежный способ улучшить кроссбраузерную совместимость это воспользоваться библиотеками JavaScript. Эти библиотеки абстрагируют вас от особенностей реализации DOM в том или ином браузере, и гарантируют, что их API работает одинаково в разных браузерах. Наиболее распростаненные из них это jQuery, prototype, и YUI.

Метки документа и участники

 Внесли вклад в эту страницу: kulakowka, curdwithraisins, sersalex, fscholz, kichik, askhat, ixidor, uleming
 Обновлялась последний раз: kulakowka,