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

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

Если тег для платформы или библиотеки не будет также включен, чистый ответ JavaScript ожидается для вопросов с [тег: JavaScript] тег.

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

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

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

Сеть разработчиков Mozilla содержит высококачественную документацию относительно JavaScript.

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

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

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

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

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

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

ECMAScript был разработан как стандартизация JavaScript Netscape и независимо разработанного JScript Microsoft. Канонической ссылкой является Спецификация языка 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 9, правильно известным как ECMAScript 2018, который был завершен в июне 2018.


При задавании вопроса JavaScript Вы должны:

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

Изучение JavaScript

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

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

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

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

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

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

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

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

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

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

Видео


Код JavaScript в качестве примера

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

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

Демонстрация!


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

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

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

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

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

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

Q: Как закрытия JavaScript работают?
A: Как закрытия JavaScript работают?

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

Q: Как возвратиться, ответ от Ajax звонят от функции?
A: Как я возвращаю ответ из асинхронного вызова?

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

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

Q: Что делает use strict в JavaScript?
A: Что действительно "использует строгий", делают в JavaScript, и каково обоснование позади него?

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

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

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

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

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

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

Больше информации:

Чат-комната