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

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

JavaScript - это динамический, объектно-ориентированный, слабо типизированный язык на основе прототипов и прототипов, традиционно используемый для создания сценариев на стороне клиента в веб-браузерах. javascript также может быть запущен вне браузера с использованием такой инфраструктуры, как node.js, nashorn, wakanda или google-apps-script. Несмотря на название, он не связан с языком программирования Java и имеет только внешнее сходство.

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

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

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

  • Spidermonkey Mozilla, первый движок JavaScript, когда-либо написанный, в настоящее время используется в Mozilla Firefox.
  • v8, интерпретатор JavaScript от Google, используемый в Google Chrome.
  • google-apps-script, облачный / серверный интерпретатор, который обеспечивает программный "макроподобный" контроль над службами и документами Служб Google.
  • node.js, построенный поверх v8, платформы, которая позволяет писать на стороне сервера приложения на JavaScript.
  • Windows включает в себя jscript, вариант JavaScript в Windows Script Host.
  • Mozilla также предлагает Rhino, реализацию JavaScript, встроенную в Java, которая обычно встроена в приложения Java для предоставления сценариев конечным пользователям.
  • В webkit (кроме проекта Chromium) реализован движок javascriptcore.
  • Actionscript (первоначально производный от HyperTalk) теперь является диалектом ECMAScript и использует множество API-интерфейсов ECMAScript.
  • duktape Встраиваемый, переносимый движок ECMAScript на C с небольшим объемом памяти.
  • Wakanda Framework, IDE и Сервер, построенный на v8, поддерживающий серверный JavaScript
  • meteorjs Приложение Meteor представляет собой смесь клиентского JavaScript, который выполняется внутри веб-браузера или мобильного приложения PhoneGap, серверного JavaScript, который выполняется на сервере Meteor внутри контейнера Node.js. (согласно документации MeteorJS)

Сеть разработчиков 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, среди других.

Текущая версия ECMAScript - это версия 7 ( ecmascript-6), известная как ECMAScript 2016, которая была завершена в июне 2016 года.


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

  1. Отладьте ваш код JavaScript (см. Creativebloq, MDN, Google и MSDN).
  2. Изолируйте проблемный код и воспроизведите его во фрагменте кода Stackoverflow или во внешней онлайн-среде, такой как JSFiddle или JS Bin (не забудьте также включить код в сам вопрос).
  3. Если используется библиотека или инфраструктура, пометьте вопрос соответствующими тегами: jquery для jQuery, prototypejs для Prototype, mootools для MooTools и так далее. Однако, если инфраструктура не используется или не нужна, не включайте эти теги.
  4. Укажите, в каком браузере возникли проблемы с кодом, и какие сообщения об ошибках, если они были, были выданы браузером (используйте Инструменты разработчика для своего браузера (см. "Полезные инструменты" ниже), чтобы просмотреть эти сообщения). Если вопрос зависит от браузера, используйте теги firefox, google-chrome, internet-explorer, opera, safari, microsoft-edge и т. Д.
  5. Помечайте вопрос как css или html только в том случае, если вы спрашиваете о проблеме, касающейся сочетания одного из них с JavaScript и на которую можно ответить только с информацией, конкретно касающейся какой-либо из этих тем.

Изучение JavaScript

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

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

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

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

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

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

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

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

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

Видео


Пример кода JavaScript

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

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

Демо!


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

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

Q: у меня есть эта структура JSON, как я могу получить доступ к свойству x.y.z?
A: http://stackoverflow.com/q/11922383

Q: Я добавляю события в цикл for, но все обработчики делают одно и то же, почему?
A: http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example

Q: Я хочу сравнить что-то с несколькими значениями, есть ли простой способ сделать это?
A: http://stackoverflow.com/questions/13737091/concise-way-to-compare-against-multiple-values

Q: Как настроить правильное наследование?
A: http://stackoverflow.com/questions/11072556/objects-dont-inherit-prototyped-functions/11072626

В: Как работают JavaScript-замыкания?
A: http://stackoverflow.com/questions/111102/how-do-javascript-closures-work/

Q: почему setTimeout() внутри for цикл всегда использует последнее значение?
A: http://stackoverflow.com/questions/5226285

Q: Как вернуть ответ от вызова AJAX из функции?
A: http://stackoverflow.com/questions/14220321

В: Почему мои обработчики, подключенные к циклу, не работают правильно, и что я могу с этим поделать?
A: http://stackoverflow.com/questions/16794707/javascript-generate-dynamically-handler/16794762

Q: Как я могу получить значения строки запроса?
A: http://stackoverflow.com/questions/901115

В: Что делает "использовать строгий" в JavaScript?
A: http://stackoverflow.com/questions/1335851/what-does-use-strict-do-in-javascript-and-what-is-the-reasoning-behind-it

Q: Как я могу сделать страницу перенаправления в jQuery / JavaScript?
A: http://stackoverflow.com/questions/503093/how-can-i-make-a-redirect-page-in-jquery-javascript

Q: Как отсортировать массив объектов по значению свойства?
A: http://stackoverflow.com/questions/1129216/sorting-objects-in-an-array-by-a-field-value-in-javascript

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

Q: Как я могу сохранить только элементы массива, которые соответствуют определенному условию?
A: http://stackoverflow.com/questions/27131984/how-can-i-only-keep-items-of-an-array-that-match-a-certain-condition

Q: Как я могу отладить мой код JavaScript?
A: http://stackoverflow.com/questions/988363/how-can-i-debug-my-javascript-code

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

Комната чата