JavaScript (не путать с Java) - это высокоуровневый, динамический, многопарадигменный, объектно-ориентированный, основанный на прототипе, слабо типизированный язык, используемый как для клиентских, так и для серверных сценариев. Его основное использование заключается в рендеринге и выполнении манипуляций с веб-страницами. Используйте этот тег для вопросов, касающихся ECMAScript и его различных диалектов/реализаций (исключая ActionScript и Google-Apps-Script).

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

JavaScript работает почти в каждой операционной системе, а движок включен в основные веб-браузеры. Он был разработан в 1995 году Бренданом Эйхом в Netscape Communications, он изначально назывался LiveScript, но был переименован в JavaScript из-за дружеских отношений Netscape с Sun Microsystems (создателями Java) в то время.

Также доступны автономные механизмы JavaScript или переводчики, в том числе:

  • Mozilla , первый в мире движок JavaScript, который в настоящее время используется в Mozilla Firefox.
  • Google JavaScript, Chrome , используемый в Google Chrome и Chromium.
  • , интерпретатор на основе облачных/серверных сторон, который обеспечивает программный "макроподобный" контроль сервисов и документов Google Apps.
  • , построенный на вершине V8, платформа, которая позволяет серверным приложениям записываться на JavaScript.
  • Windows включает , вариант JavaScript в Windows Script Host.
  • , вилка JScript, разработана Microsoft и используется в браузере Edge.
  • Mozilla также предлагает , реализацию JavaScript, встроенную в Java, как правило, встроенную в Java-приложения для предоставления сценариев конечным пользователям.
  • (за исключением проекта Chromium) реализует движок .
  • (первоначально полученный из HyperTalk) теперь является диалогом ECMAScript и использует множество API-интерфейсов ECMAScript.
  • Duktape Embeddable, портативный движок ECMAScript в C с небольшим объемом памяти.
  • Wakanda, инфраструктура, IDE и сервер, построенный на V8, поддерживающий серверный JavaScript
  • MeteorJS; приложение Meteor представляет собой сочетание клиентского JavaScript, который работает внутри веб-браузера или мобильного приложения PhoneGap, серверного JavaScript, который выполняется на сервере Meteor внутри контейнера Node.js. (согласно документам MeteorJS)

В Mozilla Developer Network содержится высококачественная документация по JavaScript.

JavaScript обычно используется для управления объектной моделью документа (DOM) и каскадными таблицами стилей (CSS) в браузере. Это позволяет создавать сценарии пользовательского интерфейса, анимацию, автоматизацию, проверку на стороне клиента и многое другое.

С появлением новых платформ, таких как Node.js, JavaScript теперь можно использовать для написания приложений на стороне сервера. Кроме того, он также используется в средах, которые не являются веб-версиями, такими как документы PDF, веб-браузеры, виджеты рабочего стола и т.д.

Номенклатура

Хотя он был разработан под названием Mocha, язык был официально назван LiveScript, когда он впервые был отправлен в бета-версиях Netscape Navigator 2.0 в сентябре 1995 года, но он был переименован в JavaScript, когда он был развернут в браузере Netscape версии 2.0B3.

Изменение имени с LiveScript на JavaScript примерно совпало с тем, что Netscape добавила поддержку технологии Java в свой веб-браузер Netscape Navigator. Окончательный выбор имени вызвал путаницу, создав впечатление, что язык является побочным продуктом языка программирования Java, и выбор был охарактеризован как маркетинговая уловка Netscape, чтобы дать JavaScript в виде красок того, что было тогда горячим, новым язык веб-программирования.

Люди часто используют термин JavaScript неформально. Язык и термин взяты из Netscape. ECMAScript, JavaScript и JScript - это термины, которые легко путать.

ECMAScript был разработан как стандартизация Netscape JavaScript и Microsoft, независимо разработанных JScript. Каноническая ссылка - это спецификация ECMAScript® 2015. Хотя JavaScript и JScript нацелены на совместимость с ECMAScript, они также предоставляют дополнительные функции (и другие отклонения), не описанные в спецификациях ECMA. Существуют и другие реализации ECMAScript.

Различия сегодня для тех, кто использует JavaScript, незначительны; люди обычно не различают варианты JavaScript и JScript от ECMAScript.

Версия ECMAScript

Большинство современных браузеров реализуют JavaScript на основе спецификации ECMAScript 6, хотя некоторые из них не могут реализовать некоторые функции ES6. Однако старые браузеры, такие как Internet Explorer 8, реализуют спецификацию ECMAScript 3, которая не содержит функций, таких как Function.prototype.bind и даже JSON.parse, среди прочих.

Текущей версией ECMAScript является версия 9, известная как ECMAScript 2018, которая была завершена в июне 2018 года.


Задавая вопрос JavaScript, вы должны:

  1. Отлаживайте свой код JavaScript (см. Creativebloq, MDN, Google и MSDN).
  2. Изолируйте проблемный код и воспроизведите его в фрагменте кода Stackoverflow или внешней сетевой среде, такой как JSFiddle или JS Bin (не забудьте также включить код в сам вопрос).
  3. Если используется библиотека или фреймворк, пометьте вопрос соответствующими тегами: для jQuery, для прототипа, для MooTools и т.д. Однако, если структура не используется или не нужна, не включайте эти теги.
  4. Если проблема связана с клиентской стороной, укажите, в каком браузере возникает код, и какие сообщения об ошибках, если они есть, были брошены браузером. Используйте средства разработчика для своего браузера (см. "Полезные инструменты" ниже), чтобы просмотреть эти сообщения. Если вопрос специфичен для браузера, используйте теги , , , , , , и т.д.
  5. Если вы спрашиваете о проблеме, связанной с комбинацией одного из них с JavaScript, укажите только теги или , и на них может быть получена только информация, касающаяся любого из этих предметов.

Изучение JavaScript

Безопасность

JavaScript и DOM предоставляют злоумышленникам возможность запускать сценарии для запуска на клиентском компьютере через Интернет. Авторы браузера содержат этот риск, используя два ограничения. Во-первых, скрипты запускаются в песочнице, в которой они могут выполнять только действия, связанные с веб-сайтом, а не задачи общего назначения, такие как создание файлов. Во-вторых, сценарии ограничены одной и той же политикой происхождения: сценарии с одного веб-сайта не имеют доступа к такой информации, как имена пользователей, пароли или файлы cookie, отправленные на другой сайт. Большинство ошибок безопасности, связанных с JavaScript, являются нарушениями одной и той же политики происхождения или изолированной программы.

Политика безопасности контента - это основной метод обеспечения того, что на веб-странице выполняется только доверенный код.

является частым типом попытки похитить данные или повредить веб-сайт через Javascript.

Полезные инструменты

Интерактивное обучение JavaScript

  • Codecademy | JavaScript: Изучите основы JavaScript и динамического программирования.
  • Уродство | Языки программирования. Ключевые понятия включают указание и обработку действительных строк, предложений и структур программ.
  • Code School: Изучите основы JavaScript и динамического программирования.
  • Академия Хан: лучше всего узнавать о анимации.
  • Codewars: Изучайте модели и обучайте по опросм, размещенным от членов сообщества

Мудрость из стека

Полезные ссылки

Бесплатные книги по программированию JavaScript

Видео


Пример кода JavaScript

Этот сценарий отображает "Hello World" на вашем экране.

window.onload = function() {
   alert('Hello World!');
}

Демо!


Часто задаваемые вопросы

Найдите ответы на некоторые из наиболее часто задаваемых вопросов о JavaScript и связанных с ними технологиях ниже.

Q: У меня есть эта структура JSON, как я могу получить доступ к свойству xyz?
A: Доступ/процесс (вложенные) объекты, массивы или JSON

В: Я добавляю события в цикл for, но все обработчики делают то же самое, почему?
A: Закрытие JavaScript внутри циклов - простой практический пример

В: Я хочу сравнить что-то против нескольких ценностей, есть ли простой способ сделать это?
A: Краткий способ сравнения с несколькими значениями

В: Как настроить правильное наследование?
A: Объекты не наследуют прототипированные функции

В: Как работают блокировки JavaScript?
A: Как работают блокировки JavaScript?

В: Почему setTimeout() внутри цикла for всегда использует последнее значение?
A: setTimeout in for-loop не печатает последовательные значения

Q: Как вернуть ответ от вызова AJAX из функции?
A: Как вернуть ответ от асинхронного вызова?

В: Почему мои обработчики не работают правильно, и что я могу сделать с этим?
A: Javascript: генерировать динамический обработчик

Q: Как я могу получить значения строки запроса?
A: Как я могу получить значения строки запроса в JavaScript?

В: Что делает use strict JavaScript в JavaScript?
A: Что делает "использовать строгий" в JavaScript, и каковы причины этого?

В: Как я могу сделать страницу перенаправления в jQuery/JavaScript?
A: Как перенаправить на другую веб-страницу?

В: Как отсортировать массив объектов по значению свойства?
A: Сортировка массива объектов по значению свойства строки

В: Я добавляю элементы с JavaScript или jQuery в более поздние моменты и добавляю события, но они не стреляют, почему?
A: Возможно, вам понадобится делегирование событий.

В: Как я могу хранить только элементы массива, соответствующие определенному условию?
A: Как я могу хранить только элементы массива, соответствующие определенному условию?

Q: Как я могу отладить свой JavaScript-код?
A: Как я могу отладить свой код JavaScript?

Q: Что означает этот символ в JavaScript?
A: Что означает этот символ в JavaScript?

Дополнительная информация:

Общение