JavaScript (чтобы не быть перепутанным с Java) является высоким уровнем, динамичным, мультипарадигма, объектно-ориентированный, основанный на прототипе, и интерпретируемый язык со слабым контролем типов, используемый и для сценариев клиентской и для серверной стороны. Его основное использование находится в рендеринге и управлении веб-страницами. Используйте этот тег для вопросов относительно ECMAScript и его различных диалектов/реализаций (исключая ActionScript и Сценарий приложений Google).
JavaScript (диалект ECMAScript) является высоким уровнем, динамичным, мультипарадигма, объектно-ориентированный, основанный на прототипе, и интерпретируемый язык со слабым контролем типов, традиционно используемый для клиентских сценариев в веб-браузерах. JavaScript может также быть выполнен за пределами браузера с использованием платформы как Node.js, Nashorn, Wakanda или Google Apps Script. Несмотря на имя, это не связано с языком программирования Java и совместно использует только поверхностные общие черты.
Если тег для платформы или библиотеки не будет также включен, чистый ответ JavaScript ожидается для вопросов с [тег: JavaScript] тег.
JavaScript работает почти на каждой операционной системе, и механизм включен в основные веб-браузеры. Разработанный в 1995 Brendan Eich в Связи Netscape, это первоначально назвали LiveScript, но переименовали к JavaScript из-за дружественных отношений Netscape с Sun Microsystems (создатели Java) в то время.
Автономные механизмы JavaScript или интерпретаторы доступны также, включая:
- Spidermonkey Mozilla, первый механизм JavaScript, когда-либо записанный, в настоящее время используемый в Mozilla Firefox.
- Механизм JavaScript Google, Chrome V8, используемый в Google Chrome и Хроме.
- Сценарий Приложений Google, облачный интерпретатор / серверный интерпретатор, который обеспечивает программное "подобное макросу" управление сервисов Google Apps и документов.
- Node.js, созданный сверху V8, платформа, которая позволяет приложениям серверной стороны быть записанными в JavaScript.
- Windows включает JScript, вариант JavaScript в Windows Script Host.
- Chakra, ветвление JScript, разрабатывается Microsoft и используется в Краю.
- Mozilla также предлагает Носорога, реализацию JavaScript, созданного в Java, обычно встроенном в JAVA-приложения для обеспечения сценариев конечным пользователям.
- WebKit (за исключением проекта Хрома) реализует механизм JavaScriptCore.
- ActionScript (первоначально полученный из HyperTalk) является теперь диалектом ECMAScript и использует много API ECMAScript.
- Встраиваемый Duktape, портативный механизм ECMAScript в C с небольшим объемом потребляемой памяти.
- Wakanda, платформа, IDE и Сервер основывались на V8, поддерживающем серверную сторону JavaScript
- Метеор: приложение Метеора является соединением клиентского JavaScript, который работает в веб-браузере или мобильном приложении PhoneGap, серверная сторона JavaScript, который работает на сервере Метеора в контейнере Node.js. (согласно документации MeteorJS)
- Nashorn, механизм JavaScript, разработанный на языке программирования Java, на основе Машины Da Vinci (JSR 292)
Сеть разработчиков Mozilla содержит высококачественную документацию относительно JavaScript.
JavaScript обычно используется для управления Объектной моделью документа (DOM) и Каскадными таблицами стилей (CSS) в браузере. Это позволяет сценарии пользовательского интерфейса, анимацию, автоматизацию, клиентскую проверку, и многое другое.
С недавним появлением платформ, таких как Node.js, JavaScript может теперь использоваться для записи приложений серверной стороны. Кроме того, это также используется в средах, которые не веб-, как документы в формате PDF, сайт-специфичные браузеры, настольные виджеты, и т.д.
Номенклатура
Хотя это было разработано под именем Мокко, язык официально назвали LiveScript, когда это сначала поставлялось в бета-версиях Netscape Navigator 2.0 в сентябре 1995, но это было переименовано в JavaScript, когда это было развернуто в версии браузера 2.0B3 Netscape.
Изменение названия от LiveScript до JavaScript примерно совпало с Netscape, добавляющим поддержку JAVA-технологии в ее веб-браузере Netscape Navigator. Заключительный выбор имени вызвал беспорядок, произведя впечатление, что язык был ответвлением языка программирования Java, и выбор был назван маркетинговой уловкой Netscape, чтобы дать JavaScript печать того, что было затем горячим, новым языком веб-программирования.
Люди часто используют термин JavaScript неофициально. Язык и термин порождаются из Netscape. ECMAScript, JavaScript и JScript являются условиями, которые легко перепутать.
ECMAScript был разработан как стандартизация JavaScript Netscape и независимо разработанного JScript Microsoft. Канонической ссылкой является Спецификация языка 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 9, правильно известным как ECMAScript 2018, который был завершен в июне 2018.
При задавании вопроса JavaScript Вы должны:
- Отладьте свой код JavaScript (см. Creativebloq, MDN, Google, & MSDN).
- Изолируйте проблематичный код и воспроизведите его во фрагменте кода Переполнения стека или внешней оперативной среде, такой как JSFiddle, Мусорное ведро JS или PasteBin (не забудьте также включать код в сам вопрос).
- Если библиотека или платформа используются, то отметьте вопрос с соответствующими тегами: jQuery для jQuery, prototypejs для Прототипа, mootools для MooTools, и так далее. Однако, если платформа не используется или не необходима, не включайте эти теги.
- Если проблема является клиентской, упоминание, какой браузер код имеет проблемы на, и какие сообщения об ошибках, если таковые имеются, были брошены браузером. Используйте Инструменты Разработчика для своего браузера (см. "Полезные Инструменты" ниже) видеть эти сообщения. Если вопрос является определенным для браузера, используйте Firefox тегов, Google Chrome, Internet Explorer, оперу, сафари, край Microsoft, Opera Mini и т.д.
- Только отметьте вопрос как CSS или HTML, если Вы спрашиваете о проблеме, которая касается комбинации одного из тех, которые имеют JavaScript и могли только быть отвечены с информацией конкретно относительно любого из тех предметов.
Изучение JavaScript
- Красноречивый JavaScript: современное введение в программирование
- Вы не Знаете JS: всесторонняя книжная серия, затрагивающая все основные темы
- Руководство JavaScript MDN: всесторонний 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 Учебные руководства JavaScript: учебное руководство по уровню новичка в JavaScript включая "Попытку это Самостоятельно" примеры. Также обеспечивает понимание усовершенствованных тем.
- Потрясающий JS: набор потрясающих библиотек JavaScript стороны браузера, ресурсов и солнечных вещей для новичков опытным программистам
Безопасность
JavaScript и DOM предоставляют потенциал злонамеренным авторам для поставки сценариев для работы клиентского компьютера через сеть. Авторы браузера содержат, это рискует использовать два ограничения. Во-первых, сценарии работают в песочнице, в которой они могут только выполнить связанные с сетью действия, не задачи программирования общего назначения как создание файлов. Во-вторых, сценарии ограничиваются той же политикой источника: сценарии с одного веб-сайта не имеют доступа к информации, такой как имена пользователей, пароли или cookie отправленным в другой сайт. Большинство связанных с JavaScript ошибок безопасности является нарушениями или той же политики источника или песочницы.
Политика Безопасности содержания является основным намеченным методом обеспечения, что только доверяемый код выполнен на Веб-странице.
XSS является частым типом попытки украсть данные или вредить веб-сайту через JavaScript.
Полезные инструменты
- Инструменты разработчика браузера
- Способы предоставить живые демонстрации
- Отрывки для включения живых демонстраций в вопросах
- JSFiddle для тестирования отрывков (онлайн)
- Plunker для тестирования отрывков (онлайн)
- JSBin для тестирования отрывков (онлайн/офлайн)
- CodePen для тестирования отрывков (онлайн)
- Liveweave для тестирования отрывков (онлайн)
- Обнаружение ошибок и тестирование лучшей практики
- Форматирование кода
- Минификация кода
- Детская площадка сравнительного тестирования производительности
Интерактивное изучение JavaScript
- Codecademy | JavaScript: Изучите основные принципы JavaScript и динамического программирования.
- Udacity | Языки программирования: Ключевые понятия включают определение и обработку допустимых строк, предложений и структур программы.
- Школа кода: Изучите основные принципы JavaScript и динамического программирования.
- Академия хана: Лучше всего узнать об анимациях.
- Codewars: Изучите шаблоны и обучайтесь на тестах, отправленных от членов сообщества
Мудрость от переполнения стека
Полезные ссылки
- Ссылка Википедии
- Собственные Эквиваленты JavaScript Методов jQuery
- MDN ссылка JavaScript
- Ядро W3C DOM, HTML, события и таблицы совместимости CSS от https://www.quirksmode.org/
- JSLint качественный инструмент кода Douglas Crockford (и JSHint, управляемое сообществом ответвление оригинала)
- Код minifiers/obfuscators: / упаковщик/, Компрессор YUI, Google Closure Compiler, UglifyJS
- Код formatter/deobfuscator: JSBeautifier
- Идиомы и глюки: округление, объект даты, объект числа, Цепочка объема
- Сад JavaScript
- comp.lang.javascript FAQ: Очень обширное руководство по причудам JavaScript создается comp.lang.javascript Usenet
- ECMA 262-5 онлайн: Версия HTML спецификации ECMAScript 5.
- Аннотируемый ES5: Аннотируемая и связанная гиперссылками производная HTML спецификации ECMAScript 5.
- Спецификация HTML ECMAScript 6.
- Таблица поддержки ECMAScript: Всесторонний список функций для реализаций ECMAScript.
- Таблица совместимости ES6
- JavaScript Weekly: Бесплатная, еженедельная новостная рассылка курируется Peter Cooper
- Node Weekly: бесплатная, еженедельная новостная рассылка
- Приоритет оператора: приоритет Оператора и таблица ассоциативности
- Поддержка Opera Mini JavaScript: путем JavaScript работает в Opera Mini, веб-браузер, используемый быть людьми, которые должны оптимизировать ресурсы просмотра
- https://nodeschool.io примеры Практики здесь: https://github.com/workshopper/javascripting
- Сравнительная таблица JS: Заполненная таблица знака равенства в JavaScript
Бесплатные книги программирования JavaScript
Видео
Код JavaScript в качестве примера
Этот сценарий отображает "Привет Мир" на Вашем экране.
window.onload = function() { alert('Hello World!'); };
Демонстрация!
Часто задаваемые вопросы
Найдите некоторые ответы на некоторые более часто задаваемые вопросы о JavaScript и связанной технологии ниже.
Q: У меня есть эта структура JSON, как я могу получить доступ к свойству x.y.z
?
A: Как я могу получить доступ и обработать вложенные объекты, массивы или JSON?
Q: Я включаю события для цикла, но все обработчики делают то же самое, почему?
A: Закрытие JavaScript в циклах – простой практический пример
Q: Я хочу сравнить что-то с несколькими значениями, есть ли простой способ сделать это?
A: Краткий способ выдержать сравнение с несколькими значениями
Q: Как настроить надлежащее наследование?
A: Объекты не наследовали смоделированные функции
Q: Как закрытия JavaScript работают?
A: Как закрытия JavaScript работают?
Q: Почему делает setTimeout()
внутри a for
цикл всегда использует последнее значение?
A: setTimeout в для цикла не печатает последовательные значения
Q: Как возвратиться, ответ от Ajax звонят от функции?
A: Как я возвращаю ответ из асинхронного вызова?
Q: Почему не делают мои обработчики, поднятые трубку в цикле, работают правильно, и что я могу делать с этим?
A: JavaScript: генерируйте динамично обработчик
Q: Как я могу получить значения строки запроса?
A: Как я могу получить значения строки запроса в JavaScript?
Q: Что делает use strict
в JavaScript?
A: Что действительно "использует строгий", делают в JavaScript, и каково обоснование позади него?
Q: Как я могу сделать страницу перенаправления в jQuery/JavaScript?
A: Как я перенаправляю к другой веб-странице?
Q: Как отсортировать массив объектов значением свойства?
A: Массив вида объектов значением свойства строки
Q: Я добавляю элементы с JavaScript или jQuery позже и добавляю события, но они не стреляют, почему?
A: Вы могли бы хотеть делегацию события.
Q: Как я могу только сохранить объекты массива, которые соответствуют определенному условию?
A: Как я могу только сохранить объекты массива, которые соответствуют определенному условию?
Q: Как я могу отладить свой код JavaScript?
A: Как я могу отладить свой код JavaScript?
Q: Что этот символ означает в JavaScript?
A: Что этот символ означает в JavaScript?
Больше информации:
Чат-комната