Лексическая структура JavaScript. Синтаксис JavaScript

Здравствуйте, уважаемые посетители моего скромного блога для начинающих вебразработчиков и web мастеров ZametkiNaPolyah.ru. Продолжаем рубрику Заметки по JavaScript, в которой уже были публикации: JavaScript строки и символы JavaScript, JavaScript числа, преобразование числа в строку JavaScript и строку в число.  В рамках рубрики Заметки по JavaScript были публикации: JavaScript операторы (void JavaScript, delete JavaScript, typeof JavaScript, new JavaScript), вставка JavaScript в HTML, типы данных JavaScriptлогические значения true JavaScript и false JavaScript и специальные значения null JavaScript и undefined JavaScript. В этой публикации я хотел бы поговорить о том, о чем должен был написать еще в первой публикации, а именно про лексическую структуру JavaScript и синтаксис JavaScript.

Лексическая структура JavaScript. Синтаксис JavaScript.

Для тех, кто не понимает термин лексическая структура, поясню: лексическая структура языка в нашем случае JavaScript – это набор правил, которые необходимо соблюдать при написание программ, сценариев, скриптов, чтобы избежать синтаксических ошибок. Прежде, чем двигаться дальше, предлагаю внести немного ясности в такой вопрос, что же такое JavaScript. Ну, во-первых, JavaScript – это не Java и даже не упрощенная версия языка Java, как думают некоторые, хотя у них есть синтаксическая схожесть и оба этих языка имеют возможность предоставить результаты своей работы web браузеру. JavaScript – интерпретируемый язык программирования, но это не означает, что он простой и многие(в том числе и автор) считают и используют этот язык только как язык сценариев, не используя возможности JavaScriptв полную силу. Официальное название языка JavaScript – ECMAScript, но все уже настолько привыкли, что называют его JavaScript, разрабатывался JavaScript кампанией Netscape. А спецификация стандартизирующее ядро языка JavaScript называется ECMA-262. Ну что, же думаю, что можно приступить, к разбору лексической структуры JavaScript.

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


Набор символов JavaScript. Регистр символов JavaScript, чувствительность регистра. Пробельные символы JavaScript.

Давайте приступим, и поговорим о том наборе символов, который можно использовать при написание программ на JavaScript, поговорим о том чувствителен или нет JavaScript к регистру, а так же попробуем вместе разобраться, как интерпретатор JavaScript относится к пробельным символам. И нужно ли ставить точку с запятой, при написании JavaScript инструкций. 

Набор символов, используемых в языке JavaScript. Символы JavaScript.

Первое, что следует рассмотреть – это набор символов, который можно использовать при написание программ, скриптов или сценариев на JavaScript, проще говоря, JavaScript символы. В JavaScript используется набор символов Unicode, так как шестнадцатиразрядная кодировка Unicode обеспечивает представление практически всех письменных языков, в отличие от ASCII или ISO Latin, с помощью этих кодировок можно представить только западноевропейские языки.

Но если ваш редактор не поддерживает Unicode и в нем есть только кодировки типа ASCII, не переживайте, ASCII и ISO Latin, представляют из себя подмножество Unicode,  и любая программа, написанная при помощи набора символов из ASCII, ISO Latin или других Unicode подмножеств будет работать корректно.

Так как в JavaScript используется кодировка Unicode, то соответственно в JavaScript каждый символ будет представлен двумя байтами, но на работе Ваших программ этот факт никак не отразится и вы можете просто про это забыть. На данный момент, стандартом ECMAScript разрешено использовать Unicode символы в любом месте программы написанной на JavaScript, для нас русскоговорящих это означает, что мы можем давать имена переменным, функциям, новым объектам, используя русские буквы, раньше можно было использовать русские символы в JavaScript, только в комментариях и JavaScript строках

Чувствительность к регистру символов в JavaScript. Регистр JavaScript.

И так, мы уже разобрались, какие символы можно использовать при написание JavaScript программ, а какие нельзя. Теперь давайте посмотрим, как JavaScript относится к регистру символов. Сразу скажу, что JavaScript – это язык, чувствительный к регистру. А это означает следующее: ключевые слова, имена переменных, функций и любых других идентификаторов  JavaScript должны содержать одинаковый набор прописных и строчных букв. Это означает, например, что ключевое слово switch, следует писать как switch, а не Switch или SWITCH. Или это означает, что newVar, NewVar, newvar, newVAR, NEWVAR – имена пяти различных JavaScript переменных. Естественно, встраивать JavaScript мы будем в HTML-страницы, а как вы знаете, язык разметки гипертекстов не чувствителен к регистру. А некоторые JavaScript объекты и свойства этих объектов имеют те же имена, что и HTML тэги и HTML атрибуты. Что может привести к путанице. Например, обработчик событий onclick в HTML обычно пишут как “onClick”, но в JavaScript, такие вольности не допустимы и писать его надо “onclick” – и никак иначе.

Пробельные символы JavaScript, необязательные точки с запятой при написание JavaScript  инструкций 

Про пробельные символы и то какие они бывают и для чего используются в HTML я говорил в рубрике Заметки по HTML, в публикации HTML теги, часть 1. Тэг PRE авторское форматирование, тэг BR перенос строк. Пробельные символы. А в этой публикации, я просто скажу, что интерпретатор JavaScript будет игнорировать все пробелы, табуляции, переносы строк присутствующие в коде программы, пробельных символов в JavaScript нет, а переносы строк в JavaScript строках создаются при помощи управляющей последовательности JavaScript.

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

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

Также, пропуск точек с запятой считается дурным тоном, и поэтому выработайте привычку ставить точку с запятой после каждой JavaScript инструкции,  в последствие это вам поможет избежать ошибок. Так как интерпретатор все-таки машина, а не человек, и действует он согласно заложенным ему инструкциям. То есть, когда он видит законченную инструкцию на новой строке без точки с запятой, он в любом случае ее туда поставит. Чаще всего неприятные ситуации связанные с тем, что интерпретатор JavaScript проставляет автоматически точки с запятой, происходят с инструкциями return, break и continue. Например, написали вы следующий код:

А машина решит, что вы в этой ситуации забыли поставить точку с запятой и сделает это за вас. И будет исполнять этот код как две различных инструкции, а не как одну:

Но нам-то необходима была одна инструкция:

Поэтому, при написание JavaScript программ будьте внимательны к переносам строк, которые вы используете, а так же правильно заканчивайте свои инструкции.

JavaScript комментарии. Литералы и идентификаторы JavaScript. Зарезервированные слова JavaScript.

В этой части публикации я хотел бы остановиться на таких моментах как: комментарии JavaScript и как их писать в JavaScript программе. Так же немного затронем тему литералов JavaScript и идентификаторов JavaScript , также будет список зарезервированных слов JavaScript.

JavaScript комментарии 

Начнем мы с комментариев JavaScript, ни для кого не секрет, что в процессе написания кода программы, неплохо было бы оставлять для самого себя какие-то небольшие пометки для того, чтобы спустя какое-то время открыть код и быстро найти нужный фрагмент, который мы захотим исправить или удалить, так же неплохо было бы временно отключать какие-то фрагменты кода, при этом их не удаляя. Для всех этих целей как раз таки и используются комментарии. JavaScript поддерживает два стиля комментариев: стиль C++ и стиль C.

Можете называть их строчные комментарии JavaScript  и блочные комментарии JavaScript, мне самому удобнее их так называть. И так, для того, чтобы написать строчный комментарий, просто напишите в начале строки // и весь текст до конца строки, который будет идти сразу после //, будет проигнорирован JavaScript интерпретатором.

Блочные комментарии позволяют отключать целые фрагменты кода, то есть сразу несколько строк. Начало блочного комментария символизирует JavaScript /*, а концом блочного комментария JavaScript является */. Весь текст написанный между символами /*…*/ не будет обрабатываться. При написание блочных комментариев соблюдайте одно не хитрое правило: блочные комментарии(в стиле С) могут состоять из нескольких строк, но не могут быть вложенными, то есть нельзя внутрь одного комментария помещать другой /*…/*…*/…*/ — так делать нельзя.

Литералы и элементарные типы данных JavaScript 

Тут наверное все очевидно, без значений с которыми мы могли бы манипулировать, не было бы никаких языков программирования, в том числе и JavaScript. Литерал – это не более чем значение, которое указывается непосредственно в тексте программы. Давайте посмотрим, какие значения можно использовать в JavaScript и о некоторых поговорим по подробней о JavaScript литералах.

Примеры литералов в JavaScript:

В данном примере присутствует практически все возможные типы данных JavaScript, которые могут использоваться как литералы. Числовые типы данных JavaScript, строковые типы данных JavaScript, null – это тоже тип данных в JavaScript, литералом в JavaScript могут выступать логические типы данных, в примере нет регулярных выражений, но JavaScript допускает их использование в качестве литералов.

Идентификаторы JavaScript

Идентификатор – это всего лишь имя. В JavaScript идентификаторами являются имена переменных и функция, правда есть еще метки некоторых циклов JavaScript. Правила наименования в JavaScript совпадают с правилами наименования в других языках программирования. Имя переменной или JavaScript функции должно начинаться с буквы, знака подчеркивания или знака доллара. Примеры идентификаторов JavaScript:

По сути в идентификаторе JavaScript могут содержаться все буквы и цифры из всего набора символов Unicode, правда я бы советовал использовать только буквы латинского алфавита. Обратите внимание, что идентификаторы не могут совпадать ни с одним из ключевых слов JavaScript (именами встроенных методов JavaScript, таких, как alert (), confirm (), и пр.)

Зарезервированные слова в JavaScript

Зарезервированные слова JavaScript – это такие слова, которые нельзя использовать при именование JavaScript функций, переменных и меток при написание JavaScript программ и сценариев! Зарезервированные слова имеет особое значение для интерпретатора JavaScript и являются частью синтаксиса JavaScript.

Список зарезервированных слов в JavaScript:

  • breack
  • catch
  • default
  • do
  • finaly
  • function
  • in
  • new
  • return
  • try
  • var
  • while
  • case
  • continue
  • delete
  • else
  • for
  • if
  • instanceof
  • null
  • switch
  • throw
  • typeof
  • void
  • with
Как вы видите в список зарезервированных слов JavaScript вошли ключевые слова, обозначающие JavaScript операторы, JavaScript инструкции, типы данных JavaScript.

Слова, зарезервированные для расширения JavaScript

Тут представлены слова, которые нельзя использовать при именование переменных JavaScript и функций, они хоть и не используются в данный момент, но могут быть использованы в дальнейшем для расширения языка JavaScript

Список всех зарезервированных слов для расширения языка JavaScript:

  • abstract
  • boolean
  • byte
  • char
  • class
  • const
  • debugger
  • double
  • enum
  • export
  • extends
  • final
  • float
  • goto
  • implements
  • import
  • int
  • interface
  • long
  • native
  • package
  • private
  • protected
  • public
  • short
  • static
  • super
  • synchronized
  • throws
  • transient
  • volatile

Идентификаторы, которых следует избегать при именовании JavaScript переменных и функций

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

Рекомендации к именованию JavaScript переменных, методов, функций. Верблюжья нотация, Camel notation.

Также имеются некоторые рекомендации по именованию JavaScript функций, методов и переменных. Заметьте, это всего лишь рекомендации, по-другому, – правила хорошего тона. Интерпретатор JavaScript вас поймет, даже если вы не будете ими руководствоваться.

Эти рекомендации по именованию в JavaScript называются верблюжьи нотации. И заключаются эти рекомендации в следующем:

  • Все имена JavaScript переменных должны писаться маленькими буквами, например, имя переменно var1 – пишется в нижнем регистре;
  • На стыке двух слов следует использовать заглавную букву, например, я написал функцию на JavaScript, которая предназначена для подсчета посетителей сайта, и назвать я ее захотел, как счетчик пользователей – userCounter, обратите внимание, первое слово user написано с маленькой буквы, а Counter с большой;
  • Переменные и свойства классов должны быть существительными, например, var, user, book, price и так далее;
  • Массивы и коллекции JavaScript именуются существительными во множественном числе, например, массив, в котором будут храниться данные пользователей зарегистрированных на сайте можно назвать users;
  • В качестве имен функций и методов JavaScript следует использовать глаголы;
  • Имена JavaScript классов следует писать с большой буквы;

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

На этом всё, спасибо за внимание, надеюсь, что был хоть чем-то полезен и до скорых встреч на страницах блога для начинающих вебразработчиков и вебмастеров ZametkiNaPolyah.ru. Не забываем комментировать и делиться с друзьями;)

2 комментария к записи Лексическая структура JavaScript. Синтаксис JavaScript

Artur

Спасибо! Все просто доступно и понятно, самые азы и основы языка JavaScript в одном месте и на одном сайте, только начал изучать JavaScript и наткнулся на ваш блог, из которого надеюсь почерпнуть для себя много нового полезного и интересного, мало кто пишет столь ясно и подробно для начинающих, а ведь мне как начинающему очень тяжело во всем разобраться!

Кирилл

Всегда пожалуйста, рад что вам понравилось! Стараюсь писать руководствуясь принципом от простого к сложно и это относится не только к рубрике уроки JavaScript для начинающих, но и всего ресурса в целом! Есть идея записать видео уроки по JavaScript, потому что многие моменты разработки на JavaScript очень тяжело объяснить текстом, не демонстрируя примером, а если и возможно, то публикация становится долгой и нудной, поэтому в скором времени вы сможете, наверное, увидеть видео уроки JavaScript!

Текст комментария: