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

Сеть разработчиков Mozilla содержит высококачественную документацию по 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 - это ECMAScript 9, известный как ECMAScript 2018, который был завершен в июне 2018 года.


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

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

Изучение JavaScript

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

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

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

- это частая попытка кражи данных или нанесения вреда сайту с помощью JavaScript.

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

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

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

Мудрость от

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

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

Видео


Пример кода JavaScript

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

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

Демо!


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

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

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

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

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

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

В: Как работают JavaScript-замыкания?
A: Как работают JavaScript-замыкания?

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

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

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

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

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

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

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

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

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

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

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

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

Комната чата