Синтаксис языка 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 W >u200D ) и ZERO W >u200C ), которые можно использовать в идентификаторах при условии, что они не являются первыми символами идентификаторов.
Полную таблицу символов Unicode вы можете посмотреть на сайте Unicode Table.
Необязательные точки с запятой
Как и в других языках программирования, для отделения инструкций друг от друга в языке JavaScript используется точка с запятой (;). Использование точек с запятой имеет важное значение для ясного выражения намерений программиста: без этого разделителя по ошибке можно принять конец одной инструкции за начало следующей и наоборот.
Обычно в JavaScript точку с запятой между инструкциями можно не ставить, если они находятся в разных строках. (Точку с запятой можно также опустить в конце программы или если следующей лексемой в программе является закрывающая фигурная скобка >.) Многие программисты на JavaScript используют точки с запятой для явного обозначения концов инструкций, даже если в этом нет необходимости.
Взгляните на следующий фрагмент. Поскольку две инструкции находятся в разных строках, первую точку с запятой можно опустить:
Однако если эти инструкции записать, как показано ниже, первая точка с запятой становится обязательной:
Комментарии
JavaScript поддерживает два способа оформления комментариев. Любой текст между символами // и концом строки рассматривается как комментарий и игнорируется JavaScript. Любой текст между символами /* и */ также рассматривается как комментарий. Эти комментарии могут состоять из нескольких строк, но не могут быть вложенными. Следующие строки представляют собой корректные JavaScript-комментарии:
Идентификаторы и зарезервированные слова
Идентификатор — это просто имя. В JavaScript идентификаторы выступают в качестве имен переменных и функций, а также меток некоторых циклов. Идентификаторы в JavaScript должны начинаться с буквы, с символа подчеркивания (_) или знака доллара ($) . Далее могут следовать любые буквы, цифры, символы подчеркивания или знаки доллара. (Цифра не может быть первым символом, так как тогда интерпретатору трудно будет отличать идентификаторы от чисел.) Примеры допустимых идентификаторов:
Для совместимости и простоты редактирования для составления идентификаторов обычно используются только символы ASCII и цифры. Однако JavaScript допускает возможность использования в идентификаторах букв и цифр из полного набора символов Юникода. Это позволяет программистам давать переменным имена на своих родных языках и использовать в них математические символы:
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 arguments eval |
Ключевые слова языка Java (зарезервированы в EcmaScript 3) | abstract double goto native static boolean enum implements package super byte export import private synchronized char extends int protected throws class final interface public transient const float long short volatile |
Предопределенные глобальные переменные и функции | arguments encodeURI Infinity Number RegExp Array encodeURIComponent isFinite Object String Boolean Error isNaN parseFloat SyntaxError Date eval JSON parseInt TypeError decodeURI EvalError Math RangeError undefined decodeURIComponent Function NaN ReferenceError URIError |
Имейте в виду, что конкретные реализации JavaScript могут содержать свои предопределенные глобальные переменные и функции. Кроме того, каждая конкретная платформа JavaScript (клиентская, серверная и прочие) может иметь свой собственный список глобальных свойств.
Синтаксис JavaScript
Синтаксис JavaScript – это набор правил, как создаются программы JavaScript. В этом уроке мы рассмотрим базовые лексические структуры языка.
Набор символов
При написании программ на JavaScript используется набор символов Unicode. В отличие от 7-разрядной кодировки ASCII, подходящей только для английского языка, и 8-разрядной кодировки ISO Latin-1, подходящей только для английского и основных западноевропейских языков, 16-разрядная кодировка Unicode поддерживает практически все письменные языки, имеющиеся на планете. Стандарт ECMAScript v3 требует, чтобы реализации JavaScript обеспечивали поддержку стандарта Unicode версии 2.1 или выше, а стандарт ECMAScript v5 требует, чтобы реализации обеспечивали поддержку стандарта Unicode версии 3 или выше.
Пробельные символы
Интерпретатор JavaScript игнорирует все пробельные символы которые могут присутствовать между языковыми конструкциями и воспринимает текст программы как сплошной поток кода.
Кроме того, JavaScript также, по большей части, игнорирует символы перевода строки. Поэтому пробелы и символы перевода строки могут без ограничений использоваться в исходных текстах программ для форматирования и придания им удобочитаемого внешнего вида.
Пробельные символы улучшают читаемость исходного кода, но эти символы, как правило, не нужны для функциональности js-сценария.
Код символа | Название | Сокращение | Описание | Escape последовательность |
---|---|---|---|---|
U + 0009 | Горизонтальная табуляция | Перемещает позицию печати к следующей позиции горизонтальной табуляции | t | |
U + 000B | Вертикальная табуляция | Перемещает позицию печати к следующей позиции вертикальной табуляции | v | |
U + 000C | Прогон страницы, смена страницы | Выбрасывает текущую страницу и начинает печать со следующей | f | |
U + 0020 | Пробел | Интервал между буквами | ||
U + 00A0 | Неразрывный пробел | Символ, отображающийся внутри строки подобно обычному пробелу, но не позволяющий разорвать в этом месте строку |
В дополнение к пробельным символам символы конца строки также используются для улучшения читаемости исходного текста. Однако в некоторых случаях символы конца строки могут влиять на выполнение кода JavaScript, поскольку есть несколько моментов, когда их применение запрещено. Символы конца строки также влияют на процесс автоматической установки точки с запятой.
Следующие символы распознаются интерпретаторами JavaScript как символы конца строки:
Код символа | Название | Сокращение | Описание | Escape последовательность |
---|---|---|---|---|
U + 000A | Перевод строки | Перемещает позицию печати на одну строку вниз | n | |
U + 000D | Возврат каретки | Перемещает позицию печати в крайнее левое положение | r | |
U + 2028 | Разделитель строк | Разделяет строки текста, но не абзацы | ||
U + 2029 | Сепаратор абзацев | Разделяет абзацы текста |
Точка с запятой
Программа (сценарий) на языке JavaScript представляет собой перечень «инструкций», которые выполняются веб-браузером.
В JavaScript инструкции, как правило, разделяются точкой с запятой (;).
Если несколько инструкций располагаются на одной строке, то между ними следует поставить знак «точка с запятой» (;).
JavaScript Синтаксис
JavaScript синтаксис это набор правил построения программ JavaScript.
JavaScript программы
Компьютерная программа — список «инструкций» выполненных в компьютере.
На языке программирования эти инструкции называются заявлениями.
JavaScript — язык программирования.
JavaScript заявления разделяются точкой с запятой:
Пример
В HTML, JavaScript программы выполняются в веб-браузере.
JavaScript заявления
JavaScript заявления состоят из:
- Значений
- Операторов
- Выражений
- Ключевых слов
- Комментариев
JavaScript значения
JavaScript синтаксис определяет два типа значений: Фиксированные значения и переменные значения.
Фиксированные значения вызываются литералы. Переменные значения вызываются переменные
JavaScript литералы
Наиболее важными правилами записи фиксированных значений являются:
Числа записываются с десятичными знаками или без них:
Строки текста, написанный в двойных или одиночных кавычках:
JavaScript переменные
На языке программирования, переменные используются для сохранения данных значений.
JavaScript использует ключевое слово var для заявления переменных.
Некий знак равенства используется для присвоения значений к переменным.
В этом примере x определяется как переменная. Затем переменной x присваивается значение 6 :
JavaScript операторы
JavaScript использует арифметические операторы ( + — * / ) — вычисляют значения:
JavaScript использует оператор присваивания ( = ) — присваивает значения переменных:
JavaScript выражение
Выражение представляет собой комбинацию значений, переменных и операторов, которая вычисляет значение.
Вычисление называется оценкой.
Например, 5 * 10 значение 50 :
Выражения также могут содержать значения переменных:
Значения могут быть различных типов, таких как числа и строки.
Например, «Андрей» + » » + «Щипунов» , значение «Андрей Щипунов» :
JavaScript ключевые слова
JavaScript ключевые слова используются для определения действий, которые необходимо выполнить.
Ключевое слово var указывает браузеру на создание переменных:
JavaScript комментарии
Не все заявления JavaScript «выполняются».
Код после двойной косой чертой // или между /* и */ считается комментарием.
Комментарии игнорируются и не выполняются:
var x = 5; // Я буду выполнен
// var x = 6; Я не буду выполнен
Вы узнаете больше о комментариях в более поздней главе.
JavaScript идентификаторы
Идентификаторы являются именами.
В JavaScript идентификаторы используются для имен переменных (ключевых слов, функций и меток).
В большинстве языков программирования правила допустимых названий во многом совпадают.
В JavaScript, первым символом должна быть буква или символ подчеркивания ( _ ) или знак доллара ( $ ).
Последующими символами могут быть буквы, цифры, символы подчеркивания или долларовый знак.
Числа не допускаются в качестве первого символа.
Таким образом JavaScript может легко различать символы от чисел.
JavaScript чувствителен к регистру
Все идентификаторы JavaScript чувствительный к регистру.
Переменная lastName и lastname , две разные переменные.
JavaScript не воспринимает VAR или Var как ключевое слово var .
JavaScript и ВерБлюд
Исторически сложилось, программисты используют различные способы объединения нескольких слов в одно имя переменной:
first-name , last-name , master-card , inter-city .
Дефисы не разрешены в JavaScript. Он предназначен для вычитания.
first_name , last_name , master_card , inter_city .
Верхний ВерБлюд (Дело Паскаля):
FirstName , LastName , MasterCard , InterCity .
Нижний Camel Case:
JavaScript программисты, как правило, используют «вер блюд», который начинается с строчной буквы:
firstName , lastName , masterCard , interCity .
JavaScript набор символов
JavaScript использует юникод набор символов.
Юникод охватывает (почти) все символы, знаки препинания и символы в мире.
Для более точного взгляда, пожалуйста, изучите наши ссылка на юникод.
Записки инженера
Доступным языком заметки по IT технологиям
Структура и синтаксис JavaScript (выжимка)
В этом посте я собрал основную выжимку по структуре и синтаксису языка JavaScript. Зачем, если есть нормальные книги посвещенные JavaScript? Этот пост может пригодиться, в качестве некого справочного материала или шпаргалки для тех кто уже пользовался JavaScript.
Я по своему опыту знаю, что не важно сколько ты работал на том или ином языке или технологии, достаточно прекратить его использовать и через некоторое время обязательно запамятаешь элементарно как функцию или класс объявить. Чтобы минимизировать время «восстановления», я решил создать данную выжимку по структуре и синтаксисе JavaScript
1. Коментарии
Бывают двух типов
2. Вставка скрипта main.js в HTML
В заголовке сайта (между )
3. Переменные
JavaScript не жестко типизированный язык, это означает что переменным не надо указывать тип, интерпретатор сам разберется. Для объявление переменной достаточно написать
Причем типов в Js всего 4-е:
4. Функции
В JavaScript можно создать два вида функций именованные и анонимные.
Именованная функция (стандартная, часто применяемая)
Видна везде (даже до объявления функции) и вызывается так
Функцию можно присвоить переменной
Анонимная функция вызывается также как и именованная (т.е. x=sum(2,3)), ее так-же можно присваивать другой переменной (s=sum). Отличие заключается в следующем:
- анонимная функция работает только после объявления
- вытекает из первого, анонимную функцию можно определять в условных операторах (например, в зависимости от условия, функцию sum мы можем объявить с разными количеством аргументов)
Передача параметров функции по ссылке и по значению
В JavaScript в отличие от С/C++ нельзя явно указать функции как в нее передавать параметры, по ссылки или по значению. Но важно помнить, что если в качестве параметров в функцию (именованная или анонимная не важно) мы передаем простые типы вроде: целых чисел, вещественных, логических, строк, то они всегда передаются по значению (входящий параметры не изменяются, функция работает с их копиями). В случаем если в функцию передаем массивы или объекты, они передаются по ссылке (входящие параметры изменяются, функция работает с ними напрямую).
Передача функции в качестве аргумента другой функции
Функцию (именованную и анонимную, не важно) можно передавать по ссылке в качестве аргумента другой функции, например