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

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

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

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

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

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

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

JavaScript обычно используется для управления Document Object Model (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 Language Specification. Хотя 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 - это версия 8, известная как ECMAScript 2017, которая была завершена в июне 2017 года.


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

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

Изучение JavaScript

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

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

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

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

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

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

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

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

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

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

Видео


Пример кода JavaScript

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

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

Демо-версия!


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Q: Как отлаживать код JavaScript? A: Как мне отладить код JavaScript?

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

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

Чат