JavaScript

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 01:25, 22 мая 2016.
JavaScript
Парадигма мультипарадигменный: объектно-ориентированное, обобщённое, функциональное, императивное, аспектно-ориентированное, событийно-ориентированное, прототипное программирование
Спроектировано Брендан Эйх
Первый   появившийся 1995
OS Кроссплатформенное
Расширение файлов .js
Портал: https://www.javascript.com/
Под влиянием
Self, Си, Scheme, Perl, Python, Java, AWK, HyperTalk

JavaScript является высокоуровневым языком программирования, динамическим безтиповым интерпретируемым языком программирования. Он был стандартизирован в спецификации языка ECMAScript. Вместе с HTML и CSS, это - одна из трех существенных технологий производства контента всемирной паутины; большинство веб-сайтов использует его, и он поддерживается всеми современными веб-браузерами. JavaScript - Основанное на прототипировании программирование с первоклассными функциями, делает его языком мультипарадигмы, поддерживая объектно-ориентированное императивное программирование и стили программирования функционального программирования. Имеет прикладной программированый интерфейс|API для работы с текстом, данные Массива, даты и регулярные выражения, но не включает ввод/вывод|I/O, такого как сети, хранение или графические средства, полагающиеся на среду узла, в которую это встроено.

Несмотря на некоторое именование, Синтаксис (язык программирования), и стандартные общие черты библиотеки, JavaScript и Java (язык программирования) никак не связан и имеет совсем другую Семантику (информатика). Синтаксис JavaScript фактически получен из C (язык программирования), в то время как семантика и проект под влиянием Sam(язык программирования) и Shema (язык программирования). JavaScript также используется в средах, которые не являются вебом, в таких как документы формата переносимого документа, специфичные для сайта браузеры и настольные виджеты. Более новые и более быстрые виртуальные машины JavaScript (VMs) и платформы полагающиеся на них, также увеличили популярность JavaScript для серверных веб-приложений. На стороне клиента JavaScript был традиционно реализован как Интерпретатор (вычисления), но более свежие браузеры выполняют своевременную компиляцию. Он также используется в игровой разработке, при создании настольных и мобильных приложений и в серверном сетевом программировании со средами выполнения, такими как Node.js.

История

Начало в Netscape

JavaScript был первоначально разработан за 10 дней в мае 1995 Бренданом Эйчем, в то время как он работал на Netscape Communications Corporation. Действительно, при конкуренции с Microsoft для пользовательского принятия веб-технологий и платформ, Netscape рассматривал их предложение клиент-сервер распределенного ОС с переносимой версией Java Sun Microsystems, обеспечивающего среду, в которой мог быть выполнен апплет Java. Поскольку Java был конкурентом C++ и стремился к профессиональным программистам, Netscape также хотел интерпретируемый язык легкого веса, который дополнит Java, обращаясь к непрофессиональным программистам, как Visual Basic Microsoft. Несмотря на то, что язык был разработан под именем Mocha, язык официально вызвали LiveScript, когда его сначала поставили в бета-версиях Навигатора Netscape 2.0 в сентябре 1995, то язык был переименован в JavaScript, "Netscape и Sun объявляют о JavaScript", Лента новостей PR, 4 декабря 1995 когда JavaScript был развернут в версии 2.0B3 браузера Netscape Изменение названия от LiveScript до JavaScript примерно совпало с поддержкой добавления Netscape JAVA-технологии в ее веб-браузере Навигатор Netscape. Заключительный выбор имени вызвал беспорядок, произведя впечатление, что язык был ответвлением языка программирования Java, и выбор был характеризован как маркетинговая уловка Netscape, чтобы дать JavaScript печать того, что было тогда горячим новым языком веб-программирования Есть распространенное заблуждение, что язык JavaScript был сделан под влиянием более раннего языка сценариев веб-страницы, разработанного Openwave|Nombas по имени C - чтобы не быть перепутанным с позже C - создаваемый в 1997.

Сторона сервера JavaScript

Netscape представил реализацию языка для серверных сценариев с серверным предприятием Netscape в декабре 1995, вскоре после выпуска JavaScript для браузеров. С середины 2000-х был всплеск сравнения стороны сервера JavaScript и реализации JavaScript, такие как Node.js

Принятие Microsoft

В 1996 были выпущены технологии сценария Microsoft Windows включая VBScript и JScript. JScript, перепроектированная реализация JavaScript Netscape, был выпущен 16 июля 1996 и был частью Internet Explorer 3, а также быть доступной стороной сервера в Сервере информации об Интернете. IE3 также включал первую поддержку Microsoft Каскадных таблиц стилей и различных расширений HTML, но в каждом случае реализация заметно отличалась от найденного в Навигаторе Netscape в то время. Эти различия мешали проектировщикам и программистам заставлять единственный веб-сайт работать хорошо в обоих браузерах, приводящих к использованию 'лучшего просматриваемый в Netscape' и 'лучше всего просматриваемый в Internet Explorer' логотипы, которые характеризовали эти первые годы браузерных войн. JavaScript начал получать репутацию быть одним из контрольно-пропускных пунктов к межплатформенной и управляемой стандартами сети. Некоторые разработчики взяли трудную задачу попытки заставить их сайты работать в обоих главных браузерах, но многие не могли выкроить время. С выпуском Internet Explorer 4, Microsoft представляла понятие динамического HTML, но различия в реализациях языка и различных и собственных Объектных моделях документа оставались и были препятствиями широко распространенному натяжному приспособлению JavaScript в сети

Стандартизация

В ноябре 1996 Netscape объявил, что представил JavaScript Ecma International для рассмотрения как промышленный стандарт, и последующая работа привела к стандартизированной версии под названием ECMAScript. В июне 1997 Ecma International опубликовала первый выпуск спецификации ECMA 262. В июне 1998 некоторые модификации были сделаны адаптировать его к ISO/IEC-16262 стандарт, и второй выпуск был выпущен. Третий выпуск ECMA 262 был опубликован на декабре 1999. Разработка четвертого выпуска стандарта ECMAScript никогда не завершалась. Пятый выпуск был выпущен в декабре 2009. Текущий выпуск стандарта ECMAScript равняется 6, выпущенному в июне 2015.

Более поздние разработки

JavaScript стал одним из самых популярных языков программирования в сети. Первоначально, однако, много профессиональных программистов клеветали на язык, потому что его целевая аудитория состояла из веб-авторов и других таких "любителей" среди других причин. Появление Ajax (программируя) |Ajax возвратило JavaScript центру внимания и привлекло более профессиональное внимание программирования. Результат был быстрым увеличением всестороннего Списка JavaScript libraries|frameworks и библиотеки, улучшил практики программирования JavaScript и увеличил использование JavaScript вне Веб-браузеров, как замечено быстрым увеличением стороны сервера платформы JavaScript.

В январе 2009 проект CommonJS был основан с целью определения библиотеки единого стандарта, главным образом, для разработки JavaScript вне браузера С повышением веб-приложения единственной страницы и тяжелых JavaScript сайтов, это все более и более используется в качестве цели компиляции для компиляторов от источника к источнику и с динамических typing|dynamic языков и со статических typing|static языков. В частности Emscripten и высоко оптимизированные своевременные compiler|JIT компиляторы, в тандеме с asm.js, который является дружественным по отношению к загодя compilation|AOT компиляторы как OdinMonkey, позволили C (язык программирования) |C и программы C++ быть скомпилированным в JavaScript и выполняются на почти собственных скоростях, заставляя JavaScript считаться "ассемблером сети”, согласно ее создателю и другим.

Что такое JavaScript?

JavaScript - язык для сообщения любой способной к JavaScript программы (обычно браузер), что сделать (в дополнение к тому, что это уже запрограммировано, чтобы сделать). Это все время формируется функциональной совместимостью.

Что это может сделать?

JavaScript дает проектировщикам HTML инструмент программирования - авторы HTML обычно - не программисты, но JavaScript - язык сценариев с очень простым синтаксисом! Почти любой может поместить маленькие "отрывки" кода в их страницы HTML

JavaScript может реагировать на события - JavaScript может собираться выполниться, когда что-то происходит, как то, когда страница закончила загружаться или когда пользователь щелкает по элементу HTML

JavaScript может управлять элементами HTML - JavaScript может считать и изменить содержание элемента HTML

JavaScript может использоваться, чтобы проверить данные - JavaScript может использоваться, чтобы проверить ввод формы

JavaScript может использоваться, чтобы обнаружить браузер посетителя - JavaScript может использоваться, чтобы обнаружить браузер посетителя, и - в зависимости от браузера - загружают другую страницу, специально предназначенную для того браузера

JavaScript может использоваться, чтобы создать cookie - JavaScript может использоваться, чтобы сохранить и получить информацию о компьютере посетителя

Что это не может сделать?

Задачи, которые не может выполнить JavaScript, выбраны на Динамических Форумах Диска: Что Вы не МОЖЕТЕ сделать с JavaScript. Причины все в конечном счете сводятся к одной вещи: вторжение на чьи-то права. Есть некоторое перекрытие, но здесь общие категории:

постоянные эффекты

Это не может записать в сервер, потому что опытный пользователь может в конечном счете управлять его эффектами. Это может cookie только для записи клиенту, потому что программист управляет его поведением, и неинформированный пользователь не может защитить свою машину в его собственном питании. Если бы JavaScript имел постоянные эффекты, то они вторглись бы в доминион своих предметов. (Например, компьютер Боба мог стать spambot просто, потому что он посещает определенный веб-сайт.)

критические функции

Большинство браузеров позволяет пользователю отключать JavaScript, и некоторые брандмауэры разделяют его от входящих страниц, обоих для соображений безопасности. Поэтому, JavaScript по сути ненадежен. Если бы это было надежно, удаленные атаки были бы проще, потому что жертвы, которые теперь выбирают из риска (и у кого мог бы быть более высокий риск уязвимостей JavaScript) не могли сделать так.

безопасная коммуникация

Любое приложение, которое работает на компьютере под управлением другой стороны, заслуживает подозрения программиста. Но это - все более истинное для приложений JavaScript, потому что код может быть считан и изменен по желанию пользователем (тогда как большинство программ потребовало бы сложного и ненадежного процесса decompilation, редактирования источника и компиляции).

иначе агрессивный

Браузер с готовностью AJAX|queries источник страницы relationship|server клиент-сервер от имени JavaScript, но никакое подобное расположение просит клиентскую машину. И JavaScript не может изменить настройки браузера. Много использования существуют для JavaScript (см. Wikipedia:JavaScript#Uses_outside_web_pages|Uses вне веб-страниц). Эта статья представляет основы каждого использования, известного авторам.

Все

В каждом использовании порядок выполнения очень прост; это начинается с первой строки первого файла и заканчивается последним.

Сеть

Сценарии могут быть помещены или во "внешние" файлы, "внутренние" HTML-тэги или во "встроенные" HTML-атрибуты. Внешние файлы широко приняты как лучшее среди них потому что:

  1. They проще считать (потому что мозг не должен переключать "режимы").

Браузер #The может снова использовать их (потому что они адресуемы отдельный от HTML). Однако ситуации действительно существуют, где другие надлежащие. Например, если что-то должно произойти непосредственно после того, как определенное изображение загружается, внешний или внутренний сценарий недостаточен. И внешние сценарии довольно неудобны на ориентированных на программирование досках объявлений, таким образом, получатели внутренних сценариев, как ожидают, воплотят их.

Внешние Файлы

Сценарии могут быть соединены от любого body или (более обычно) head. Вот index.html:

 <html>
     <body>
         <script type="text/javascript" src="sample.js"></script>
     </body>
 </html>

И sample.js:

 document.write('Hello, world!');

Внутренние Теги

Работа тегов почти таким же способом как файлы, кроме браузера получает всю страницу в одном запросе (и программист должен отсеять через несоответствующий язык, или HTML или JavaScript, чтобы сделать что-либо), если теги используются. Вот index.html:

 <html>
     <body>
         <script type="text/javascript">&amp;lt;!--
             document.write('Hello, world!');
         //--&amp;gt;</script>
     </body>
 </html>

Вы, возможно, заметили, что этот script тег содержит комментарий HTML, который содержит JavaScript. Это должно помочь более старым браузерам, которые были выпущены, прежде чем тег был известен и выведет на экран JavaScript как текст на странице. Две наклонных черты - комментарий JavaScript, который скрывает разделитель комментария HTML (-&gt;) от способных к JavaScript браузеров, которые иначе отметили бы его как инвалида; инициализатор (&lt;!-), как, известно, не вызывает проблему.

Почему тот же script тег не работает в head оставляют как осуществление для читателя.

Встроенные Атрибуты

Обработчики событий

Любой HTML-атрибут, имя которого начинается on, является обработчиком событий. Обработчики событий позволяют JavaScript намного большую гибкость, чем это имело бы без них; они уведомляют сценарий, что определенная вещь произошла и предоставляет некоторую контекстную информацию. Однако обратите внимание на то, что они также просты в использовании из внешних и внутренних сценариев. Вот index.html:

 <html>
     <body onload="document.write('Hello, world!');">
     </body>
 </html>

javascript: URLs

Любой HTML-атрибут, который обычно берет URL, может вместо этого содержать JavaScript. Наиболее распространенный пример этого следует в новом index.html.

 <html>
     <body>
         <a href="javascript: foo();">
     </body>
 </html>

Это могло почти как легко быть записано с onclick обработчик, который является большей доступностью.

'Синтаксис' языка состоит из его грамматики и пунктуации. Проект: синтаксис JavaScript включает значения: Категория: Операторы, и: Категория: Слова. Каждое значение представляет данную величину и может использоваться, чтобы вычислить другие значения через операторов. У слов есть несколько различных целей, включая операции, храня значения, и непосредственно влияя на поток управления программы.

Выражения

Выражение - что-либо, что можно оставить отдельно, не вызывая синтаксическую ошибку. Каждый решает к значению (во многом как алгебраические выражения). Любое одинокое выражение - простой оператор и обычно завершается любым точка с запятой} или новая строка (или оба).

Значения

Значения - тип выражения и включают каждый: тип. Тип данных значения постоянно связывается со значением. Вот некоторые бесполезные операторы значения:

5;
490;

Операторы

Большинство: Категория: Оператор оценивает от других значений; некоторые используются, чтобы инициализировать значения. Вот больше бесполезных операторов:

5 + 4;
3 - 7;
'Здесь ' + 'немного текста.';

Переменные

Переменные, обычно описываемые как мусорные ведра хранения, могут сделать вышеупомянутые операторы полезными. Переменные представлены идентификаторами. В JavaScript каждая переменная может содержать точно один элемент (без практического предела на размере элемента). Элемент - значение переменной, и это может быть что-либо, что Вы можете программировать. Наиболее распространенный оператор - тот, который не производит новое значение; вместо этого, это присваивает значение переменной. Присвоение - тип выражения, которое оценивает к присвоенному значению.

variable = 'value';

variable будет теперь рассматриваться точно, как будто это were 'value'. Отметьте, однако, что исключение к этому применяется, если одна переменная присвоена другому:

variable1 = variable2;

Никакая переменная не будет помнить присвоения, когда другой будет изменен. Если Вы хотите этот C - функциональность стиля, используйте объекты.

Наиболее успешная практика существует, который должен всегда использовать var ключевое слово прежде (или когда), на переменную сначала ссылаются. (Обратите внимание на то, что var может использоваться, когда на переменную уже сослались; это не имеет никакого эффекта.)

var variable = 'value';

Это гарантирует, что variable только определена в текущем объеме, таким образом, переменная тем же именем весьма преднамеренно перезаписана.

Операторы блока

Операторы блока ', или' блоки ', используются, чтобы собрать в группу связанные операторы. Оператор блока начинается' '{ и заканчивается } . Вот программа с оператором блока:

var x = 7;
var y = 13;
{
    x = y - x;
}

В этой точке операторы блока могут казаться довольно бесполезными, потому что у них нет объема в JavaScript. Однако Учебное руководство/Поток управления statements|the следующая страница объяснит, для чего они хороши.

Оператор управления изменяет программу поток. Управляющая структура дополнительно содержит другой Tutorial/Statements|statement, который выполняется при указанных условиях модификацией и/или проверкой допустимости среды. Кроме того, циклы являются структурами, которые повторяют их операторы, в то время как среда проверена данным тестом или "условием". (И цикл, который не изменяет его среду в некоторый момент в пути, который в конечном счете делает его ложь условия, бесконечный цикл, общий тип ошибки.)

Структуры

if

if оператор самая фундаментальная управляющая структура. Это переходит согласно значению истинности булева Учебного руководства/Операторов Выражения. Если условием будет Истина, то предоставленный блок будет выполняться. Дополнительно, второй оператор может быть обеспечен, сразу после блока if и еще запускающийся с ключевого слова else, который будет выполняться, если условие будет false.

if (условие)
     действие
if (условие)
    действие 1
else
    действие 2

switch

switch (или switch..case), оператор тестирует выражение на равенство с каждым из нескольких значений. Если совпадающее значение найдено, операторы сразу после него выполняются; если ни одно из соответствия значений и default случай существует, это выполняется. Если поток управления соответствующего случая никогда не передает по #break|break оператор, и это сопровождается другим случаем, следующий случай также выполняется.

switch(выражение){
    case значение 1:
        ...
        break;
    case значение 2:
        ...
        break;
    case и тд:
        ...
        break;
    default:
        ...
}

Это - хорошая замена для нескольких составленных if..else операторы, которые только тестируют то же выражение на равенство с несколькими значениями.

Операторы цикла

Циклы

while

while является самым простым из циклов: это неоднократно проверяет булево условие и затем выполняет Statements, пока условие не Truth|false.

while (условие)
    действие

do..while

do..while цикл - точно то же как while цикл, за единственным исключением, что это проверяет свое условие, только уже выполнив его оператор один раз. Это полезно для ситуаций, которые включают выполнение вычисления или получение некоторого ввода, затем используя его результат решить, повторить ли действие.

do
    действие
while (условие);

for

for цикл немного более сложен. Это включает четыре части: инициализатор, условие, шаг и оператор.

Выполнение for цикл следует за порядком набора:

  1. The инициализатор выполняется. Это может содержать объявление переменных.
  2. The условие проверен. Если результатом этого выражения будет falsе, то цикл выйдет, и нормальный поток управления возобновится.
  3. The оператор выполняется.
  4. The шаг выполняется. Это может быть любым выражением; возвращаемое значение проигнорировано.
  5. Go к 2.

Если Вы пишете while цикл, который использует инициализатор и/или шаг, рассмотрите использование for вместо этого. Любая из частей может быть оставлена незаполненная (сопровождаемый точкой с запятой как надлежащая), когда они будут проигнорированы.

for (инициализация; условие; шаг)
    действие

for..in

for..in цикл позволяет цикличное выполнение по всем ключам объект. Два протеста применяются: если Вы не стараетесь проверить ключи с Object.prototype.hasOwnProperty (), Вы можете получить свойство на прототипе объекта случайно; и for..in циклы чрезвычайно медленные в текущих популярных реализациях JavaScript. Обычным for цикл должен быть Ваш выбор по умолчанию: обратитесь к for..in цикл только там, где абсолютно необходимый. Для каждого элемента объекта ключ должен быть присвоен переменному ключу, и затем оператор должен выполняться.

for (var ключ in объект)
    действие

Прыжки (переходы)

break

break оператор выходит из указанного оператора блока или сразу включающего оператора цикла.

break;
break label;

continue

continue может только использоваться внутри #Loops|loops. Это пропускает остальную часть текущей итерации указанного цикла и начинает его следующее. Если никакая надпись не определена, оператор применяется к сразу включающему циклу

continue;
continue label;

Надписи

Любой оператор блока может быть маркирован, предшествуя ему или его ключевому слову с идентификатором, сопровождаемым двоеточием. Метки могут быть предоставлены переходы операторам, чтобы определить цель, к которой можно перейти, но если Вы находите сам использующий их, довольно вероятно, что код чрезмерно сложен, и проект должен быть упрощен и пересмотрен — возможно, переместив некоторые из тех внутренних циклов в функции.

Ссылки