По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.

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

Примечание. Если не включен также тег для платформы или библиотеки, на вопросы с тегом javascriptожидается ответ на чистом JavaScript.

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

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

  • Spidermonkey от Mozilla, первый в истории движок JavaScript, используемый в Mozilla Firefox.
  • JavaScript-движок Google, Chrome V8, используется в Google Chrome и Chromium.
  • Google Apps Script, облачный / серверный интерпретатор, обеспечивающий программный «макроподобный» контроль над службами и документами Служб Google.
  • Node.js, созданный на основе V8, платформы, которая позволяет писать серверные приложения на JavaScript.
  • Windows включает JScript, вариант JavaScript в Windows Script Host.
  • Chakra, форк JScript, разработан Microsoft и используется в Edge.
  • Mozilla также предлагает Rhino, реализацию JavaScript, встроенную в Java, обычно встроенную в Java-приложения для предоставления сценариев конечным пользователям.
  • WebKit (кроме проекта Chromium) реализует движок JavaScriptCore.
  • ActionScript (первоначально полученный из HyperTalk) теперь является диалектом ECMAScript и использует множество API-интерфейсов ECMAScript.
  • Duktape Embeddable, переносимый движок ECMAScript на C с небольшим объемом памяти.
  • Wakanda, интегрированная среда, IDE и сервер, построенный на V8 и поддерживающий серверный JavaScript
  • Meteor: приложение Meteor представляет собой смесь клиентского JavaScript, который запускается внутри веб-браузера или мобильного приложения PhoneGap, серверного JavaScript, который выполняется на сервере Meteor внутри контейнера Node.js. (согласно документации MeteorJS)
  • Nashorn, движок JavaScript, разработанный на языке программирования Java на основе машины Да Винчи (JSR 292)

Сеть разработчиков 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's 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, среди прочих. Чтобы увидеть текущую поддержку функций ES6 браузером, см. https://caniuse.com/#search=es6.

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


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

  1. Отладьте свой код JavaScript (см. Creativebloq, MDN, Google < / a>, & MSDN).
  2. Изолируйте проблемный код и воспроизведите его в фрагмент кода переполнения стекаили внешняя онлайн-среда, такая как JSFiddle, JS Binили PasteBin(не забудьте также включить код в сам вопрос).
  3. Если используется библиотека или инфраструктура, пометьте вопрос соответствующими тегами: jqueryдля jQuery, prototypejsдля Prototype, mootoolsдля MooTools и т. д. Однако, если инфраструктура не используется или не нужна, не включайте эти теги.
  4. Если проблема на стороне клиента, укажите, в каком браузере возникли проблемы с кодом, и какие сообщения об ошибках, если таковые имеются, были выданы браузером. Используйте Инструменты разработчика для вашего браузера (см. «Полезные инструменты» ниже), чтобы увидеть эти сообщения. Если вопрос касается браузера, используйте теги firefox, google-chrome, internet-explorer, opera, safari, microsoft-edge, opera-miniи т. д.
  5. Помечайте вопрос как cssили html, если вы спрашиваете о проблеме, касающейся комбинации один из тех, у кого JavaScript, и на него можно было ответить только информацией, конкретно касающейся этих предметов

Изучение JavaScript

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

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

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

XSS - это частая попытка украсть данные или нанести вред сайту через JavaScript.

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

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

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

Мудрость от переполнения стека

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

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

Видео


Пример кода JavaScript

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

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

Демо !


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

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

В: У меня есть эта структура JSON. Как я могу получить доступ к свойству x.y.z?
A: Как получить доступ и обрабатывать вложенные файлы? объекты, массивы или JSON?

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

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

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

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

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

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

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

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

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

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

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

В: Как мне извлечь значение свойства в виде массива из массива объектов? A: из массива объектов, извлечь значение свойства в виде массива

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

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

В: Как я могу отладить мой код JavaScript?
A: Как это сделать Я отлаживаю свой код JavaScript?

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

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

Комната чата