Синтаксис JavaScript – это набор правил, как создаются программы JavaScript. В этом уроке мы рассмотрим базовые лексические структуры языка.
Набор символовПри написании программ на JavaScript используется набор символов Unicode. В отличие от 7-разрядной кодировки , подходящей только для английского языка, и 8-разрядной кодировки , подходящей только для английского и основных западноевропейских языков, 16-разрядная кодировка Unicode поддерживает практически все письменные языки, имеющиеся на планете. Стандарт ECMAScript v3 требует, чтобы реализации JavaScript обеспечивали поддержку стандарта Unicode версии 2.1 или выше, а стандарт ECMAScript v5 требует, чтобы реализации обеспечивали поддержку стандарта Unicode версии 3 или выше.
Var str = "hello, world!"; // Используется латиница var стр = "Привет, мир!"; // Используется кириллица
Пробельные символыПробельные символы улучшают читаемость исходного кода, но эти символы, как правило, не нужны для функциональности js-сценария.
U + 0009 | Горизонтальная табуляция | Перемещает позицию печати к следующей позиции горизонтальной табуляции | \t | |
U + 000B | Вертикальная табуляция | Перемещает позицию печати к следующей позиции вертикальной табуляции | \v | |
U + 000C | Прогон страницы, смена страницы | Выбрасывает текущую страницу и начинает печать со следующей | \f | |
U + 0020 | Пробел | Интервал между буквами | ||
U + 00A0 | Неразрывный пробел | Символ, отображающийся внутри строки подобно обычному пробелу, но не позволяющий разорвать в этом месте строку |
В дополнение к пробельным символам символы конца строки также используются для улучшения читаемости исходного текста. Однако в некоторых случаях символы конца строки могут влиять на выполнение кода JavaScript, поскольку есть несколько моментов, когда их применение запрещено. Символы конца строки также влияют на процесс автоматической установки точки с запятой.
Следующие символы распознаются интерпретаторами JavaScript как символы конца строки:
Точка с запятойПрограмма (сценарий) на языке JavaScript представляет собой перечень «инструкций», которые выполняются веб-браузером.
В JavaScript инструкции, как правило, разделяются точкой с запятой (;).
Если несколько инструкций располагаются на одной строке, то между ними следует поставить знак "точка с запятой" (;).
Во многих случаях JavaScript интерпретирует переход на новую строчку как разделитель команд для автоматического ввода точек с запятой (ASI) для завершения инструкций.
Если каждая инструкция размещается на отдельной строке, то разделитель можно не писать:
Одна инструкция может располагаться на нескольких строчках:
В этом случае JavaScript ждёт завершение выражения и поэтому автоматически не вставляет «виртуальную» точку с запятой между строчками.
Примечание: Хотя точки с запятой в конце инструкций необязательны, рекомендуется всегда добавлять их. Сейчас это правило, которому следуют все большие проекты.
Это правило предотвращает некоторые ошибки, например незавершенный ввод, а также позволяет сжимать кoд за счет удаления пустых мест. Сжатие кода без точек с запятой приводит к синтаксическим ошибкам. Кроме того, наличие точек с запятой препятствует снижению быстродействия, потому что синтаксические анализаторы пытаются исправлять предполагаемые ошибки, добавляя недостающие точки с запятой.
Чувствительность к региструДля написания JavaScript-пpoгpaмм используется набор символов Unicode, который включает в себя наборы ASCII и Latin-1 и поддерживается практически всеми языками и платформами.
В JavaScript все элементы, включая имена переменных, функций и операторов, чувствительны к регистру и должны всегда содержать одинаковые наборы прописных и строчных букв. Например, ключевое слово while должно набираться как «while», а не «While» или «WHILE».
Аналогично num, NUM и Num – это три разные переменные:
КомментарииКомментарии позволяют выделить фрагмент программы, который не выполняется интерпретатором JavaScript, а служит лишь для пояснений содержания программы.
Комментарии в JS могут быть однострочными и многострочными.
Однострочные комментарии начинаются с двойного слэша // . Текст считается комментарием до конца строки:
Многострочный комментарий начинается с слэша и звездочки (/*) , а заканчивается ими же в обратном порядке (*/) . Так можно закомментировать одну и более строк:
Совет: Не пренебрегайте комментариями в своих кодах. Они пригодятся вам при отладке и сопровождении программ. На этапе разработки бывает лучше закомментировать ненужный фрагмент программы, чем просто удалить. А вдруг его придется восстанавливать?
ИдентификаторыИдентификатор - это последовательность букв, цифр, символов подчёркивания (_) и знаков доллара ($) . Цифра не может быть первым символом идентификатора, т. к. тогда интерпретатору JavaScript труднее отличать идентификаторы от чисел. Идентификаторы выступают в качестве имён переменных, функций, свойств объекта и т. д.
Для совместимости и простоты редактирования для составления идентификаторов обычно используются только символы ASCII и цифры. Однако в ECMAScript v3 идентификаторы могут содержать буквы и цифры из полного набора символов Unicode. Это позволяет программистам давать переменным имена на своих родных языках и использовать в них математические символы:
Var имя = "Макс"; var Π = 3.14;
Исторически, программисты использовали разные способы объединения нескольких слов для записи идентификаторов. Сегодня есть два устоявшихся негласных стиля: camelCase и snake_case.
В JavaScript наиболее популярным стилем именования идентификаторов, состоящих из нескольких слов, является camelCase – "верблюжья" нотация. Это означает, что первая буква является строчной, а первые буквы всех последующих слов – прописными, например:
Var firstSecond; var myCar = "audi"; var doSomethingImportant;
Внимание: В JavaScript объединение нескольких слов для записи идентификаторов с применением дефисов запрещено. Они зарезервированы для математических вычитаний.
На заметку: В JavaScript ключевые слова, зарезервированные слова и значения true , false и null не могут быть идентификаторами.
Ключевые и зарезервированные словаСтандарт ЕСМА-262 определяет набор ключевых слов (keywords), которые не могут использоваться в качестве идентификаторов. Зарезервированные слова имеют определенное значение в языке JavaScript, так как они являются частью синтаксиса языка. Использование зарезервированных слов приведет к ошибке компиляции при загрузке скрипта.
Зарезервированные ключевые слова по версии ECMAScript® 2015- break
- catch
- class
- const
- continue
- debugger
- default
- delete
- export
- extends
- finally
- function
- import
- instanceof
- return
- super
- switch
- throw
- typeof
- while
- yield
Кроме того, ЕСМА-262 содержит набор зарезервированных слов (reserved words), которые также нельзя использовать как идентификаторы или имена свойств. За ними сейчас не стоит никакой функциональности, но она может появиться в будущих версиях:
- await
В строгом (strict) режиме в этот список добавляются следующие слова:
- implements
- package
- protected
- static
- interface
- private
- public
- abstract
- boolean
- double
- final
- float
- native
- short
- synchronized
- transient
- volatile
В 5-й редакции ECMAScript немного изменены правила употребления ключевых и зарезервированных слов. Как и прежде они не могут быть идентификаторами, но теперь их допустимо использовать как имена свойств в объектах. Тем не менее, для обеспечения совместимости с прошлыми и будущими редакциями ECMAScript всё-же лучше не использовать ключевые и зарезервированные слова как идентификаторы и имена свойств.
Итоги- Интерпретатор JavaScript игнорирует все пробельные символы которые могут присутствовать между языковыми конструкциями и воспринимает текст программы как сплошной поток кода.
Кроме того, JavaScript также, по большей части, игнорирует символы перевода строки. Поэтому пробелы и символы перевода строки могут без ограничений использоваться в исходных текстах программ для форматирования и придания им удобочитаемого внешнего вида. - Пропуск точек с запятой нельзя признать правильной практикой программирования, и поэтому желательно выработать привычку их использовать.
- В JavaScript все элементы, включая имена переменных, функций и операторов, чувствительны к регистру и должны всегда содержать одинаковые наборы прописных и строчных букв.
- Не пренебрегайте комментариями в своих кодах. Они пригодятся вам при отладке и сопровождении программ. Не переживайте насчет увеличения размера кода, т.к. существуют инструменты сжатия JavaScript, которые, при публикации, легко удалят комментарии.
- Идентификаторы выступают в качестве имён переменных, функций, свойств объекта и состоят из последовательности букв, цифр, символов подчёркивания (_) и знаков доллара ($) .
- Ключевые слова JavaScript, применяемые для обозначения элементов синтаксиса языка, а также другие слова, зарезервированные на будущее, нельзя использовать в качестве имен переменных, функций и объектов.
JavaScript может быть реализован с помощью операторов JavaScript , которые помещаются в теги HTML script ... /script на веб-странице.
Вы можете разместить теги script , содержащие ваш JavaScript , в любом месте вашей веб-страницы, но обычно рекомендуется хранить его в тегах head .
Тег script предупреждает программу браузера, чтобы начать интерпретацию всего текста между этими тегами в качестве скрипта. Простой синтаксис вашего JavaScript будет выглядеть следующим образом.
JavaScript code
Тег скрипта содержит два важных атрибута -
- Язык - этот атрибут указывает, какой язык сценариев вы используете. Как правило, его значение будет javascript. Хотя недавние версии HTML (и XHTML, его преемник) прекратили использование этого атрибута.
- Тип. Этот атрибут теперь рекомендуется для указания используемого языка сценариев, и его значение должно быть установлено на «text / javascript».
Таким образом, ваш сегмент JavaScript будет выглядеть следующим образом:
JavaScript code
Ваш первый скрипт JavaScriptВозьмем пример для распечатки «Hello World». Мы добавили дополнительный комментарий HTML, который окружает наш код JavaScript. Это чтобы сохранить наш код из браузера, который не поддерживает JavaScript. Комментарий заканчивается «// ->». Здесь «//» означает комментарий в JavaScript, поэтому мы добавляем это, чтобы браузер не читал конец комментария HTML как часть кода JavaScript. Затем мы вызываем функцию document.write , которая записывает строку в наш HTML-документ.
Эта функция может использоваться для записи текста, HTML или обоих. Взгляните на следующий код.
Этот код даст следующий результат:
Hello World!
Пробелы и разрывы строкJavaScript игнорирует пробелы, вкладки и новые строки, которые появляются в программах JavaScript. Вы можете свободно использовать пробелы, вкладки и новые строки в своей программе, и вы можете форматировать и отступать ваши программы аккуратным и последовательным образом, что делает код легко читаемым и понятным.
Точки с запятой в JavaScriptВ простых инструкциях в JavaScript обычно следует символ с запятой, как и на языках C, C ++ и Java. JavaScript, однако, позволяет пропустить эту точку с запятой, если каждое из ваших операторов помещается в отдельную строку. Например, следующий код может быть написан без точек с запятой.
Но при форматировании в одной строке следующим образом, вы должны использовать точки с запятой -
Примечание. Хорошая практика программирования заключается в использовании точек с запятой.
Чувствительность корпусаJavaScript - это язык с учетом регистра. Это означает, что ключевые слова, переменные, имена функций и любые другие идентификаторы всегда должны вводиться с последовательной заглавной буквой.
Таким образом, идентификаторы Time и TIME будут передавать различные значения в JavaScript.
ПРИМЕЧАНИЕ. Следует соблюдать осторожность при написании имен переменных и функций в JavaScript.
Синтаксис JavaScript
С 1995 года JavaScript прошел длинный путь от скромного компонента браузера Netscape до современных высокопроизводительных JIT-интерпретаторов. Казалось бы, всего лет пять назад разработчики были ошеломлены появлением Ajax, а уже сейчас сложные JavaScript-приложения достигли объемов в сотни и тысячи строк кода.
В прошлом году появилось новое поколение JavaScript-приложений, ничем не отличающихся от приложений рабочего стола, - невероятный прогресс веб-технологий. Ушли в прошлое медленно выполняемые запросы страниц при каждом взаимодействии пользователя с приложением. Движки JavaScript стали настолько мощными, что появилась возможность сохранять состояние на стороне клиента, что существенно ускорило реакцию приложения и улучшило качество его работы.
Если вы знаете другие языки программирования, вам может оказаться полезна информация, что JavaScript является высокоуровневым, динамическим, нетипизированным и интерпретируемым языком программирования, который хорошо подходит для программирования в объектно-ориентированном и функциональном стилях. Свой синтаксис JavaScript унаследовал из языка Java, свои первоклассные функции – из языка Scheme, а механизм наследования на основе прототипов – из языка Self. Но вам не требуется знать все эти языки или быть знакомыми с их терминологией для изучения JavaScript.
В этой статье мы рассмотрим базовые лексические структуры языка.
СимволыПри написании программ на JavaScript используется набор символов Юникода. Юникод является надмножеством кодировок ASCII и Latin-1 и поддерживает практически все письменные языки, имеющиеся на планете. Стандарт ECMAScript 3 требует, чтобы реализации JavaScript обеспечивали поддержку стандарта Юникода версии 2.1 или выше, а стандарт ECMAScript 5 требует, чтобы реализации обеспечивали поддержку стандарта Юникода версии 3 или выше.
Чувствительность к региструJavaScript – это язык, чувствительный к регистру символов. Это значит, что ключевые слова, имена переменных и функций и любые другие идентификаторы языка должны всегда содержать одинаковые наборы прописных и строчных букв.
Например, ключевое слово while должно набираться как «while», а не «While » или «WHILE». Аналогично myvar, Myvar, MyVar и MYVAR – это имена четырех разных переменных. Заметим, однако, что язык разметки HTML (в отличие от XHTML) не чувствителен к регистру. Так как HTML и клиентский JavaScript тесно связаны, это различие может привести к путанице. Многие JavaScript-объекты и их свойства имеют те же имена, что и теги и атрибуты языка HTML, которые они обозначают. Однако если в HTML эти теги и атрибуты могут набираться в любом регистре, то в JavaScript они обычно должны набираться строчными буквами.
Например, атрибут onclick обработчика события чаще всего задается в HTML как onClick, однако в JavaScript-коде (или в XHTML-документе) он должен быть обозначен как onclick.
Пробелы, переводы строк и символы управления форматомJavaScript игнорирует пробелы, которые могут присутствовать между лексемами в программе. Кроме того, JavaScript также по большей части игнорирует символы перевода строки. Поэтому пробелы и символы перевода строки могут без ограничений использоваться в исходных текстах программ для форматирования и придания им удобочитаемого внешнего вида.
Помимо обычного символа пробела (\u0020 ) JavaScript дополнительно распознает как пробельные следующие символы: табуляция (\u0009 ), вертикальная табуляция (\u000B ), перевод формата (\u000C ), неразрывный пробел (\u00A0 ), маркер порядка следования байтов (\uFEFF ), а также все символы Юникода, относящиеся к категории Zs.
Следующие символы распознаются интерпретаторами JavaScript как символы конца строки: перевод строки (\u000A ), возврат каретки (\u000D ), разделитель строк (\u2028 ) и разделитель абзацев (\u2029 ). Последовательность из символов возврата каретки и перевода строки интерпретируется как единственный символ завершения строки.
Символы Юникода, управляющие форматом (категория Cf), такие как RIGHT-TO-LEFT MARK (\u200F ) и LEFT-TO-RIGHT MARK (\u200E ), управляют визуальным представлением текста, в котором они присутствуют. Они имеют большое значение для корректного отображения текста на некоторых языках и являются допустимыми в комментариях JavaScript, строковых литералах и в литералах регулярных выражений, но не в идентификаторах (таких как имена переменных), определяемых в программах JavaScript. Исключение составляют ZERO WIDTH JOINER (\u200D ) и ZERO WIDTH NON-JOINER (\u200C ), которые можно использовать в идентификаторах при условии, что они не являются первыми символами идентификаторов.
Полную таблицу символов Unicode вы можете посмотреть на сайте Unicode Table .
Необязательные точки с запятойКак и в других языках программирования, для отделения инструкций друг от друга в языке JavaScript используется точка с запятой (;). Использование точек с запятой имеет важное значение для ясного выражения намерений программиста: без этого разделителя по ошибке можно принять конец одной инструкции за начало следующей и наоборот.
Обычно в JavaScript точку с запятой между инструкциями можно не ставить, если они находятся в разных строках. (Точку с запятой можно также опустить в конце программы или если следующей лексемой в программе является закрывающая фигурная скобка }.) Многие программисты на JavaScript используют точки с запятой для явного обозначения концов инструкций, даже если в этом нет необходимости.
Взгляните на следующий фрагмент. Поскольку две инструкции находятся в разных строках, первую точку с запятой можно опустить:
Однако если эти инструкции записать, как показано ниже, первая точка с запятой становится обязательной:
КомментарииJavaScript поддерживает два способа оформления комментариев. Любой текст между символами // и концом строки рассматривается как комментарий и игнорируется JavaScript. Любой текст между символами /* и */ также рассматривается как комментарий. Эти комментарии могут состоять из нескольких строк, но не могут быть вложенными. Следующие строки представляют собой корректные JavaScript-комментарии:
// Это однострочный комментарий. /* Это тоже комментарий */ // а это другой комментарий. /* Это еще один комментарий. Он располагается в нескольких строках. */
Идентификаторы и зарезервированные словаИдентификатор - это просто имя. В JavaScript идентификаторы выступают в качестве имен переменных и функций, а также меток некоторых циклов. Идентификаторы в JavaScript должны начинаться с буквы, с символа подчеркивания (_) или знака доллара ($) . Далее могут следовать любые буквы, цифры, символы подчеркивания или знаки доллара. (Цифра не может быть первым символом, так как тогда интерпретатору трудно будет отличать идентификаторы от чисел.) Примеры допустимых идентификаторов:
I my_variable_name v13 _myvar $str
Для совместимости и простоты редактирования для составления идентификаторов обычно используются только символы ASCII и цифры. Однако JavaScript допускает возможность использования в идентификаторах букв и цифр из полного набора символов Юникода. Это позволяет программистам давать переменным имена на своих родных языках и использовать в них математические символы:
Var имя = "Александр"; var Π = 3.14;
JavaScript резервирует ряд идентификаторов, которые играют роль ключевых слов самого языка. Эти ключевые слова не могут служить идентификаторами в программах. JavaScript также резервирует некоторые ключевые слова, которые в настоящее время не являются частью языка, но которые могут войти в его состав в будущих версиях. В приведенной таблице перечислены все ключевые слова по категориям:
Базовые идентификаторы | break delete function return typeof case do if switch var catch else in this void continue false instanceof throw while debugger finally new true with default for null try |
Новые ключевые слова в стандарте EcmaScript 5 | class const enum export extends import super |
Зарезервированные слова в строгом режиме (в обычном они доступны) | implements let private public yield interface package protected static |
Синтаксис JavaScript это набор правил, как JavaScript строятся программы.
JavaScript ПрограммыКомпьютерная программа представляет собой список "инструкций" , чтобы быть "выполнены" компьютером.
В языке программирования, эти программные инструкции называются заявления.
JavaScript является языком программирования.
JavaScript заявления разделяются точкой с запятой.
В HTML, JavaScript программы могут быть выполнены с помощью веб-браузера.
Заявления JavaScriptзаявления JavaScript состоят из:
Значения, Операторы, выражения, ключевые слова и комментарии.
Значения JavaScriptСинтаксис JavaScript определяет два типа значений: Фиксированные значения и значения переменных.
Фиксированные значения называются литералы. Значения переменных называются переменными.
JavaScript литералыНаиболее важные правила написания фиксированные значения являются:
Числа записываются с или без десятичных знаков:
Строки текст, написанный в двойные или одинарные кавычки:
Переменные JavaScriptВ языке программирования, переменные используются для хранения значений данных.
JavaScript использует var ключевое слово, чтобы объявить переменные.
Знак равенства используется для присвоения значений переменным.
В этом примере, х определяется как переменная. Тогда х назначается (учитывая) значение 6:
Операторы JavaScriptJavaScript использует оператор присваивания (=) для присвоения значений переменным:
JavaScript использует арифметические операторы (+ - * /) для вычисления значений:
JavaScript ВыраженияВыражение представляет собой сочетание значений, переменных и операторов, который вычисляет на значение.
Вычисление называется оценка.
Например, 5 * 10 принимает значение 50:
Выражения могут также содержать значения переменных:
Значения могут быть различных типов, таких как числа и строки.
Например, "Джон" + "," + "Доу", принимает значение "Джон Доу":
JavaScript Ключевые словаJavaScript ключевые слова используются для определения действий, которые необходимо выполнить.
var ключевое слово указывает браузеру, чтобы создать новую переменную:
JavaScript КомментарииНе все операторы JavaScript будут "выполнены".
Код после того, как двойные косые черты // или между /* и * / рассматривается как комментарий.
Комментарии игнорируются, и не будут выполнены:
JavaScript ИдентификаторыИдентификаторы являются именами.
В JavaScript, идентификаторы используются для именования переменных (и ключевым словам, а также функции и метки).
Правила для юридических имен так же в большинстве языков программирования.
В JavaScript, первый символ должен быть буквой, подчеркивание (_) или знак доллара ($) .
Последующие символы могут быть буквы, цифры, символы подчеркивания или знака доллара.
Числа не допускаются в качестве первого символа.
Таким образом, JavaScript можно легко отличить идентификаторы из чисел.
Все идентификаторы JavaScript чувствительны к регистру.
Переменные LastName и ФАМИЛИЯ, две разные переменные.
JavaScript не интерпретирует VAR или Var в качестве ключевого слова var .
JavaScript и Camel CaseИсторически сложилось так, программисты использовали три способа соединения нескольких слов в одно имя переменной:
Дефисы:
first-name, last-name, master-card, inter-city.
Дефис не допускаются в JavaScript. Она предназначена для вычитаний.
Нижнее подчеркивание:
first_name, last_name, master_card, inter_city.
Дело Camel:
FirstName, LastName, MasterCard, InterCity.
В языках программирования, особенно в JavaScript, верблюд случай часто начинается со строчной буквы:
firstName, lastName, masterCard, interCity.
JavaScript Набор символовJavaScript использует набор символов Unicode.
Unicode обложки (почти) все символы, знаки препинания и символы в мире.
Подключение