Описание тега 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, вы должны:
- Отладьте ваш код JavaScript (см. Creativebloq, MDN, Google и MSDN).
- Изолируйте проблемный код и воспроизведите его во фрагменте кода Stackoverflow или во внешней онлайн-среде, такой как JSFiddle или JS Bin (не забудьте также включить код в сам вопрос).
- Если используется библиотека или инфраструктура, пометьте вопрос соответствующими тегами: jquery для jQuery, prototypejs для Prototype, mootools для MooTools и так далее. Однако, если инфраструктура не используется или не нужна, не включайте эти теги.
- Укажите, в каком браузере возникли проблемы с кодом, и какие сообщения об ошибках, если они были, были выданы браузером (используйте Инструменты разработчика для своего браузера (см. "Полезные инструменты" ниже), чтобы просмотреть эти сообщения). Если вопрос зависит от браузера, используйте теги firefox, google-chrome, internet-explorer, opera, safari, microsoft-edge и т. Д.
- Помечайте вопрос как css или html только в том случае, если вы спрашиваете о проблеме, касающейся сочетания одного из них с JavaScript и на которую можно ответить только с информацией, конкретно касающейся какой-либо из этих тем.
Изучение JavaScript
- Красноречивый JavaScript: современное введение в программирование
- Вы не знаете, JS: серия книг в глубину, охватывающих все основные темы
- Руководство по MDN JavaScript: всеобъемлющее руководство по JavaScript в Mozilla Developer Network
- quirksmode.org - JavaScript: хорошее представление о JavaScript и других технологиях, используемых в браузере (например, DOM).
- Учебник по JavaScript: чистая книга по JavaScript, которая охватывает практически все.
- Учебное пособие по JavaScript и примеры кодов: учебные пособия по чистому JavaScript и примеры кодов для реальных проблем, возникающих в JavaScript.
- Основные навыки JavaScript из учебного плана по веб-стандартам
- quirksmode.org | Введение в события: подробное описание различных типов обработки событий. Включает в себя обзор различных способов присоединения обработчиков событий и указывает на причуды между различными браузерами. Обязательно прочитайте, если вы хотите понять обработку событий.
- W3C Wiki | Основы JavaScript, DOM: Программирование - реальные основы, Создание и изменение HTML, Обработка событий с помощью JavaScript.
- Отладка JavaScript для начинающих: хорошее введение в отладку JavaScript. Обязательно читать!
- Современный JavaScript: разработка и дизайн: современное руководство по изучению JavaScript с использованием практических примеров и подходов, которые следует использовать сегодня.
- Изучение продвинутого JavaScript: набор интерактивных упражнений, которые проведут вас через некоторые фундаментальные концепции JavaScript.
- Руководство по стилю Javascript: простое руководство, которое дает представление о стиле кода Javascript.
- Нули в javascript: легко проверить, что возвращается при сравнении двух любых значений.
- Javascript на польском языке: самый распространенный сайт на польском языке.
Безопасность
JavaScript и DOM предоставляют злоумышленникам возможность создавать сценарии для запуска на клиентском компьютере через Интернет. Авторы браузера содержат этот риск, используя два ограничения. Во-первых, сценарии выполняются в песочнице, в которой они могут выполнять только действия, связанные с Интернетом, а не задачи общего назначения, такие как создание файлов. Во-вторых, сценарии ограничены одной и той же политикой происхождения: сценарии с одного веб-сайта не имеют доступа к такой информации, как имена пользователей, пароли или файлы cookie, отправленные на другой сайт. Большинство ошибок безопасности, связанных с JavaScript, являются нарушениями той же политики происхождения или песочницы.
Политика безопасности контента - это основной метод обеспечения того, чтобы на веб-странице выполнялся только доверенный код.
Полезные инструменты
- Инструменты разработчика браузера
- Дополнение Firebug для Firefox
- Инструменты разработчика Firefox для Firefox
- Инструменты разработчика для IE
- Инструменты разработчика Chrome для Chrome
- Веб-инспектор для Safari
- Способы предоставления живых демо
- Обнаружение ошибок и лучшие практики тестирования
- Форматирование кода
Интерактивное обучение JavaScript
- Codecademy | JavaScript: Изучите основы JavaScript и динамического программирования.
- Udacity | Языки программирования: Ключевые понятия включают определение и обработку допустимых строк, предложений и программных структур.
- Code School: Изучите основы JavaScript и динамического программирования.
- Хан Академия: лучше всего узнать об анимации.
- Codewars: изучайте шаблоны и обучайтесь тестам, опубликованным участниками сообщества
Мудрость из стека
- http://stackoverflow.com/questions/2628672/what-should-every-javascript-programmer-know
- http://stackoverflow.com/questions/61088/hidden-features-of-javascript
- http://stackoverflow.com/questions/111102/how-do-javascript-closures-work
- http://stackoverflow.com/questions/562412/return-value-from-function-with-an-ajax-call
- http://stackoverflow.com/questions/336859/javascript-var-functionname-function-vs-function-functionname
- http://stackoverflow.com/questions/1639180/how-does-the-function-construct-work-and-why-do-people-use-it
- http://stackoverflow.com/questions/500431/what-is-the-scope-of-variables-in-javascript
- http://stackoverflow.com/questions/9549780/what-does-this-symbol-mean-in-javascript
- http://stackoverflow.com/questions/988363/how-can-i-debug-my-javascript-code
Полезные ссылки
- Ссылка на Википедию
- Собственные JavaScript-эквиваленты методов jQuery
- Справочник MDN JavaScript
- W3C DOM Core, HTML, таблицы событий и таблицы совместимости CSS с http://www.quirksmode.org/
- JSLint Code Quality Tool от Дугласа Крокфорда (и JSHint, сообщества оригинальной ветки)
- Минифайеры / обфускаторы кода: / packer /, YUI Compressor, Google Closure Compiler, UglifyJS
- Форматирование / деобфускатор кода: JSBeautifier
- Идиомы и ошибки: округление, объект даты, числовой объект, цепочка областей видимости
- JavaScript Garden
- comp.lang.javascript FAQ: очень обширное руководство по особенностям JavaScript, созданное Usenet's comp.lang.javascript
- ECMA 262-5 Online: HTML-версия спецификации ECMAScript 5.
- Аннотированный ES5: Аннотированный и гиперссылочный производный HTML спецификации ECMAScript 5.
- Неофициальный черновик спецификации ES6.
- Матрица поддержки ECMAScript: подробный список возможностей для реализации ECMAScript.
- Таблица совместимости ES6
- JavaScript Weekly: бесплатная еженедельная новостная рассылка, которую курирует Питер Купер
- Node Weekly: бесплатная еженедельная новостная рассылка
Бесплатные книги по программированию JavaScript
- JavaScript Крокфорда
- Красноречивый JavaScript
- Вы не знаете JS
- Основные шаблоны JavaScript и JQuery для начинающих
- Основы JavaScript
- Основы jQuery (начинается с основ JavaScript)
- Руководство по JavaScript для Mozilla Developer Network
- Корпоративная веб-разработка: с рабочего стола на мобильный
- Изучение шаблонов дизайна JavaScript - Адди Османи
- Шаблоны для крупномасштабной разработки JavaScript - Адди Османи
Видео
- Библиотека YUI
- Канал AngularJS
- LearnCode.academy
- JavaScript Планета
- Инструменты разработчика Google Chrome
- Codeschool 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
Дополнительная информация:
- Википедия на JavaScript
- MDN - учить JavaScript
- Создатель JavaScript, Брендан Эйх, объясняет происхождение