По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.

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

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

  1. Отладьте свой код JavaScript (см. Creativebloq, MDN, Google < / a>, & MSDN).
  2. Изолируйте проблемный код и воспроизведите его в фрагменте кода переполнения стека.или во внешней онлайн-среде, такой какJSFiddle,JS Bin< /a>илиPasteBin(не забудьте также включить код в сам вопрос). По возможности предпочтительнее использовать фрагменты кода Stack Overflow, а не внешние сайты.
  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.

О 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. (согласно документации Meteor).
  • 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.

Текущая версия ECMAScript — ECMAScript 12, известная как ECMAScript 2021, опубликованная в июне 2021 года.

Пример кода JavaScript

Этот сценарий отображает "Hello World" в браузере, когда веб-сайт, на котором он содержится, завершает загрузку..

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

Демо !

Изучение JavaScript

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

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

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

Видео

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

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

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

Атаки с использованием межсайтового скриптинга (XSS) — это попытки украсть данные или нанести вред веб-сайту с помощью JavaScript.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Комната чата