Описание тега javascript
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, вы должны:
- Отладьте свой код JavaScript (см. Creativebloq, MDN, Google и MSDN).
- Изолируйте проблемный код и воспроизведите его во фрагменте кода stackru или во внешней онлайн-среде, такой как JSFiddle, JS Bin или PasteBin (не забудьте также включить код в сам вопрос).
- Если используется библиотека или фреймворк, пометьте вопрос соответствующими тегами: jquery для jQuery, prototypejs для Prototype, mootools для MooTools и т. Д. Однако, если фреймворк не используется или необходим, не включайте эти теги.
- Если проблема связана с клиентом, укажите, в каком браузере возникают проблемы с кодом, и какие сообщения об ошибках, если таковые имеются, были выданы браузером. Используйте Инструменты разработчика для своего браузера (см. "Полезные инструменты" ниже), чтобы просмотреть эти сообщения. Если вопрос связан с конкретным браузером, используйте теги firefox, google-chrome, internet-explorer, opera, safari, microsoft-edge, opera-mini и т. Д.
- Пометьте вопрос как 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.
Полезные инструменты
- Инструменты разработчика браузера
- Версия для разработчиков Firefox
- Инструменты разработчика Firefox (документация)
- Инструменты разработчика для IE
- Инструменты разработчика Chrome для Chrome
- Веб-инспектор для Safari
- Способы предоставления живых демонстраций
- Обнаружение ошибок и тестирование передовой практики
- Форматирование кода
- Минификация кода
- Площадка для тестирования производительности
Интерактивное обучение JavaScript
- Codecademy | JavaScript: изучите основы JavaScript и динамического программирования.
- Udacity | Языки программирования: ключевые концепции включают определение и обработку допустимых строк, предложений и структур программы.
- Школа кода: изучите основы JavaScript и динамического программирования.
- Khan Academy: Лучшее, чтобы узнать об анимации.
- Кодовые войны: изучайте шаблоны и тренируйтесь с помощью викторин, опубликованных участниками сообщества.
Мудрость из переполнения стека
- Что должен знать каждый программист на JavaScript?
- Скрытые возможности JavaScript?
- Как работают замыкания в JavaScript?
- Возвращаемое значение из функции с вызовом Ajax
- var functionName = function() {} vs functionName () {}
- javascript: в чем разница между функцией и классом
- Статические переменные в JavaScript
- Как работает конструкция (function() {})() и почему люди ее используют?
- Каков объем переменных в JavaScript?
- Что означает этот символ в JavaScript?
- Как я могу отладить свой код JavaScript?
- Что возвращают методы querySelectorAll и getElementsBy*?
Полезные ссылки
- Ссылка в Википедии
- Собственные эквиваленты JavaScript для методов jQuery
- Справочник по MDN JavaScript
- W3C DOM Core, HTML, события и таблицы совместимости CSS с https://www.quirksmode.org/
- JSLint инструмент качества коды на Дугласе Crockford (и JSHint филиала по инициативе общин оригинала)
- Минификаторы / обфускаторы кода: / packer /, YUI Compressor, Google Closure Compiler, UglifyJS
- Средство форматирования / деобфускатор кода: JSBeautifier
- Идиомы и Gotchas: Округление, Объект Date, номер объекта, Scope Chain
- JavaScript сад
- comp.lang.javascript FAQ: очень подробное руководство по особенностям JavaScript, созданное с помощью comp.lang.javascript Usenet
- ECMA 262-5 Online: HTML-версия спецификации ECMAScript 5.
- Аннотированный ES5: HTML- код с аннотациями и гиперссылками, производный от спецификации ECMAScript 5.
- Спецификация HTML ECMAScript 6.
- Матрица поддержки ECMAScript: подробный список возможностей для реализаций ECMAScript.
- Таблица совместимости ES6
- JavaScript Weekly: бесплатный еженедельный информационный бюллетень, курируемый Питером Купером.
- Node Weekly: бесплатная еженедельная информационная рассылка
- Приоритет операторов: таблица приоритетов и ассоциативности операторов
- Поддержка JavaScript в Opera Mini: способ работы JavaScript в Opera Mini, веб-браузере, который используется людьми, которым необходимо оптимизировать ресурсы просмотра.
- http://nodeschool.io/ Примеры практики здесь: https://github.com/workshopper/javascripting
- Таблица сравнения JS: Полная таблица знака равенства в JavaScript
Бесплатные книги по программированию на JavaScript
- JavaScript Крокфорда
- Красноречивый JavaScript
- Вы не знаете JS
- Основные шаблоны проектирования JavaScript и jQuery для начинающих
- Основы JavaScript
- Основы jQuery (начинается с основ JavaScript)
- Руководство Mozilla Developer Network по JavaScript
- Корпоративная веб-разработка: от настольных компьютеров к мобильным
- Изучение шаблонов проектирования JavaScript- Адди Османи
- Шаблоны для крупномасштабной разработки на JavaScript- Адди Османи
- JS Books - Бесплатные книги по JavaScript
Видео
- Библиотека YUI
- Канал AngularJS
- LearnCode.academy
- Инструменты разработчика Google Chrome
- Codeschool 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?
Дополнительная информация
- Википедия по JavaScript
- MDN - Изучите JavaScript
- Создатель JavaScript Брендан Эйх объясняет происхождение