Лексическая структура
В данном разделе описываются основные конструкции языка, основные понятия и правила написания кода на языке JavaScript.
Набор символов
Стандарт ECMAScript v3 допускает наличие Unicode (16 bit) символов в любом месте кода JavaScript сценария. При написании кода JavaScript используется набор символов Unicode или его подмножество ASCII (7 bit), ISO Latin-1 (8 bit).
Стандарты ECMAScript v1 и v2 допускают использование Unicode только в строковых значениях и комментариях. Это означает, что использование русскоязычного текста в Unicode не возможно применять непосредственно в области JavaScript кода (да и зачем?!).
Чувствительность к регистру
JavaScript является чувствительным к регистру языком программирования. Переменные, ключевые слова, наименования функций должны содержать одинаковые наборы символов верхнего и нижнего регистров при их объявлении и использовании, в противном случае эти объявления будут считаться различными. Пример:
<script type="text/javascript"> var myVariable = 1 var MyVariable = 2 alert(myVariable) alert(MyVariable) </script>
выполнение данного кода приведет к выводу диалогового сообщения сначала с текстом ‘1’ затем ‘2’. В нечувствительных к регистру символов языках подобный код вывел бы в обоих случаях текст ‘2’, т.к. переменная myVariable была бы идентична MyVariable, т.е. была бы одной и той же переменной. Следует помнить, что HTML является нечувствительным к регистру символов языком — разметки. HTML в отличии от XHTML и JavaScript теги, имена, атрибуты могут быть набраны как строчными, так и прописными буквами. Но в JavaScript их необходимо писать только строчными буквами, например: onClick в HTML и onclick в JavaScript коде.
Разделители и переводы строк
JavaScript игнорирует табуляции и пробелы в коде, поэтому для оформления кода можно без ограничений использовать эти символы для форматирования кода.
Инструкции кода JavaScript могут разделяются как ‘;’, если они находятся в одной строке, так и переводом строк без использования ‘;’ если инструкции разделены по строкам.
Пример правильных конструкций:
a = 1; b = 2; c = 3 d = 4 e = 5; f = 6;
Пример неправильных конструкций:
a = 1 b = 2 return true; a = 1
Вообще желательно использование ‘;’ даже в тех случаях, когда это некритично для интерпретатора JavaScript. Необходимо выработать привычку написания разделителя и уберечь себя в дальнейшем от множества синтаксических ошибок.
Комментарии
JavaScript поддерживает комментарии подобно языкам Java, C++ в стиле C. За символами // и до конца текущей строки текст будет являться комментарием. Если одной строки для комментария недостаточно его можно заключить между /* и */ находящимися на разных строках. Так же возможно использование /* … */ для комментирование блоком внутри одной строки.
Примеры комментариев:
a = 1; //это комментарий /* Здесь тоже комментарий, но уже многострочный */ a /* комментарий - блок внутри одной строки */ = 1;
Литералы
Значения, указанные непосредственно в тексте программы.
Примеры литералов:
12 // Число 1.2 // Дробное число одна целая и две десятых "Строка" // Строка текста 'Строка' // Ещё одна строка текста true // Логическое значение false // Ещё одно логическое значение /выражение/gi // Регулярное выражение (поиск по шаблону) null // Отсутствие объекта { x:1, y:1 } // Инициализация объекта [ 1, 2, 3, 4, 5 ] // Инициализация массива
Идентификаторы
Идентификаторы выступают в качестве названий переменных, функций и меток некоторых функций. Первым символом должна быть буква, символ подчёркивания _ или знак доллара $. Последующими символами могут быть буквы, цифры, символ подчеркивания и/или знак $.
Примеры допустимых идентификаторов:
i first_variable_name lastVariableName $myvar _var1
Идентификатор не может совпадать ни с одним из зарезервированных ключевых слов, предназначенных в JavaScript для других целей!
Зарезервированные ключевые слова
break do if switch typeof case else in this var catch false instanceof throw void continue finally new true while default for null try with delete function return
и слова неиспользуемые в JavaScript, но зарезервированные ECMAScript v3 на будущее.
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 debugger
Следует избегать и применения в качестве идентификаторов следующих 4-х слов:
as is namespace use
Современные интерпретаторы хотя и не запрещают использовать данные слова в качестве идентификаторов, но данные слова формально они зарезервированы для ECMAScript v4.
И наконец, следует избегать использования в качестве идентификаторов предопределенных идентификаторов глобальных переменных и функций JavaScript. Их использование может приводить к ошибкам (если свойство доступно только на чтение), либо к переопределению глобальной переменной или функции. Разные реализации JavaScript как клиентские так и серверные могут значительно расширить этот список. Ниже приведен общий для всех список:
arguments encodeURI Infinity Object String Array Error isFinite parseFloat SyntaxError Boolean escape isNaN parseInt typeError Date eval Math RangeError undefined decodeURI EvalError NaN ReferenceError unescape decodeURIcomponent Function Number RexExp URIError