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

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

Если тег для фреймворка или библиотеки также не включен, для вопросов с тегом [tag: 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, вы должны:


Изучение JavaScript

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

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

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

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

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

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

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

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

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

Бесплатные книги по программированию 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?

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

Комната чата