Описание тега javascript

По вопросам программирования на 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, в том числе:

  • Mozilla Spidermonkey, первый из когда-либо написанных движков JavaScript, в настоящее время используется в Mozilla Firefox.
  • Движок Google JavaScript, Chrome V8, используется в Google Chrome и Chromium.
  • Google Apps Script, облачный / серверный интерпретатор, который обеспечивает программный "макро-подобный" контроль над службами и документами Google Apps.
  • Node.js, построенный на основе V8, платформы, которая позволяет писать серверные приложения на JavaScript.
  • Windows включает JScript, вариант JavaScript в Windows Script Host.
  • Chakra, форк JScript, разработан Microsoft и используется в Edge.
  • Mozilla также предлагает Rhino, реализацию встроенного в Java JavaScript, обычно встраиваемого в приложения 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 был разработан как стандартизация JavaScript Netscape и независимо разработанного 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/.

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


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

  1. Отладьте свой код JavaScript (см. Creativebloq, MDN, Google и MSDN).
  2. Изолируйте проблемный код и воспроизведите его во фрагменте кода stackru или во внешней онлайн-среде, такой как 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: современное введение в программирование
  • You Don't Know JS: серия подробных книг, охватывающих все основные темы
  • Руководство MDN JavaScript: подробное руководство по JavaScript в сети разработчиков Mozilla.
  • quirksmode.org - JavaScript: хорошее введение в JavaScript и другие технологии, используемые в браузере (например, DOM).
  • Учебник по JavaScript: книга на чистом JavaScript, охватывающая почти все.
  • Учебное пособие по JavaScript и примеры кодов: учебник по чистому JavaScript и примеры кодов для реальных проблем, с которыми сталкивается JavaScript.
  • Основные навыки JavaScript: введение, охватывающее основные основы программирования.
  • quirksmode.org | Введение в события: исчерпывающее описание различных типов обработки событий. Включает обзор различных способов присоединения обработчиков событий и указывает на причуды между разными браузерами. Обязательно к прочтению, если вы хотите понять, как обрабатывать события.
  • W3C Wiki | Основы JavaScript, DOM: исчерпывающий список ссылок на образовательные материалы W3C.
  • Отладка JavaScript для начинающих: хорошее введение в отладку JavaScript. Обязательно прочитать!
  • Современный JavaScript: разработка и дизайн: современное руководство по изучению JavaScript с использованием практических примеров и подходов, которые следует использовать сегодня.
  • Изучение расширенного JavaScript: набор интерактивных упражнений, которые проведут вас через некоторые фундаментальные концепции JavaScript.
  • Руководство по стилю JavaScript: простое руководство, которое дает представление о стилизации кода JavaScript.
  • Нули в JavaScript: легко проверить, что возвращается при сравнении любых двух значений.
  • JavaScript.RU: Центральный ресурс JavaScript для русскоязычного сообщества.
  • JavaScript на польском языке: популярный сайт о JavaScript на польском языке.
  • W3 Schools Javascript Tutorials: учебник по JavaScript для начинающих, включая примеры "Попробуйте сами". Он также дает представление о сложных темах.
  • Awesome JS: коллекция потрясающих JavaScript-библиотек, ресурсов и полезных вещей для браузеров для начинающих и опытных программистов.

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

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

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

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

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

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

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

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

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

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

Видео


Пример кода JavaScript

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

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

Демо!


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

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

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

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

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

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

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

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

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

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

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

Q: Что делаетuse strictделать в JavaScript?
A: Что делает "use strict" в JavaScript и что за этим стоит?

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

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

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

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

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

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

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

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

Чат