Структура языка JavaScript

В этой главе:

  • Лексическая структура

  • Набор символов

  • Чувствительность к регистру

  • Пробельные символы

  • Комментарии

  • Литералы

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

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

  • Инструкции

Лексическая структура

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

Каждое отдельное правило в лексической структуре называется лексемой. Лексема - минимальная единица текста программы, которая имеет определённый смысл для интерпретатора и которая не может быть разбита на отдельные части. К лексемам относятся: разделители, идентификаторы, ключевые слова, литералы, знаки операторов и т.д. Далее будет рассмотрена лексическая структура языка JavaScript.

Набор символов

При написании программ на JavaScript используется набор символов Unicode. Он поддерживает практически все письменные языки, имеющиеся на планете в настоящее время. Это позволяет использовать символы в тексте программы не только те, которые есть у вас на клавиатуре, но и любые другие символы из различных языков.

1
2
3
4
5
6
var xé = "café";
var число = 123;
var λ = "öö";
var something = "öö" === '\xF6\u00F6';
 
document.write(xé + "<br>" + число + "<br>" + λ + "<br>" + something);

Чувствительность к регистру

Язык JavaScript чувствителен к регистру символов. Это значит, что ключевые слова, имена переменных, функций и любые другие идентификаторы используемые в программе всегда должны содержать одинаковый набор прописных и строчных букв. Например, ключевое слово switch должно быть написано как switch, а не Switch или SWITCH, так же и имена переменных myVar, MYVAR или MyVar - будут считаться, как имена трех различных переменных.

1
2
3
4
5
6
<script>
  var num = 2;
  var Num = 4;
 
  document.write("num: " + num + "<br> Num: " + Num);
</script>

Пробельные символы

Между лексемами могут вставляться разделители, в качестве которых используются пробельные символы: пробелы, табуляция и переносы строк. Число пробельных символов не ограничивается и зависит от предпочтений программиста, основная цель которого - создать наглядный и легко читаемый текст программы (исходный код). Интерпретатор игнорирует пробельные символы и воспринимает текст как сплошной поток символов, для него важно лишь определить границы между лексемами, поэтому позиционирование инструкций и других лексем может быть произвольным.

В примере представлен JavaScript-код, в котором используются пробельные символы:

1
2
3
4
5
6
7
<script>
  function starLine() {
    for(var i = 0; i < 45; i++) {
       document.write("*");
    }
  }
</script>

Код примера можно было бы написать и в одну строку, не используя пробельных символов, но такой код будет менее удобен для чтения:

1
2
3
<script>
  function starLine(){for(var i=0;i<45;i++){document.write("*");}}
</script>

Комментарии

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

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

Ещё одна важная роль комментариев, которую часто используют на практике - это временное отключение некоторой части кода. Таким образом комментарии используют, когда бывает трудно определить местонахождение ошибки.

Пример:

1
2
3
4
5
6
7
8
9
10
11
12
<script>
// это однострочный комментарий
 
/* Это многострочный комментарий */
 
/* 
* Это еще один многострочный комментарий.
* Он расположен на нескольких строках
* и может содержать различные символы.
* Звездочки слева вставлены для красоты.
*/
</script>

Литералы

Литерал (константа) - запись в исходном коде программы, представляющая собой обычное фиксированное значение. Литералы представляют собой константы, непосредственно включаемые в текст программы, в отличие от прочих данных - констант и переменных, обращение к которым осуществляется посредством ссылок. Литералы не могут быть изменены в тексте программы. В следующем примере 14 и "Кит" это литералы, а num, и fish - переменные:

1
2
var num = 14;
var fish = "Кит";

Представление каждого литерала зависит от конкретного типа данных: числовые, строковые, логические (булевы) и т.д. Ниже представлены литералы простых типов

1
2
3
4
5
6
7
9         // число девять
17.3      // число с плавающей точкой
"текст"   // строка текста
'h3'      // другая строка
true      // логическое значение (булево)
null      // пустой объект
undefined // неопределённое значение

Литералы являются важной частью любого языка программирования, так как написать программу без них невозможно.

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

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

  • Идентификаторы не могут совпадать ни с одним из ключевых (зарезервированных) слов JavaScript, т.к. они являются частью синтаксиса языка и имеют специальное значение для интерпретатора.

  • Идентификаторы могут состоять из одного и более символов.

  • Так как JavaScript чувствителен к регистру символов, следует учитывать регистр при обращении к переменным, функциям и т.д.

  • Идентификаторы должны начинаться с буквы, символа подчеркивания (_) или знака доллара ($). Далее могут следовать любые буквы, цифры, знаки доллара, или символы подчеркивания. Старайтесь придумывать идентификаторы, которые не трудно будет понять и запомнить.

Примеры допустимых идентификаторов:

1
2
3
4
x
my_var
_myCar2
$cash

Для удобства чтения и редактирования сценария, давайте идентификаторам имена, которые будут соответствовать хранящимся в них данных. Рассмотрим небольшой пример:

1
2
3
var age = 30;            // возраст
var hairColor = "black"; // цвет волос
var year = 1900;         // год

В JavaScript наиболее популярным стандартом именования идентификаторов состоящих из нескольких слов является camelСase - "Верблюжья" нотация (нотация - это устоявшиеся правила записи). Согласно этому стандарту идентификаторы, которые состоят из одного слова, пишутся строчными буквами:

1
2
var color = "black";
var number = 7;

Если идентификатор состоит более, чем из одного слова, то первое слово пишется строчными буквами, а каждое последующее слово начинается с прописной буквы:

1
2
var myAge = 10;
var firstName = "Bilbo";

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

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

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

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

class

const

enum

export

extends

import

super

Ниже представлены слова, которые используются в строгом режиме - JavaScript strict mode.

implements

let

private

public

yield

interface

package

protected

static

В строгом режиме также вводится ограничение на использование следующих идентификаторов.

arguments

eval

Инструкции

Любая программа представляет собой последовательность выполняемых инструкций. Инструкцияявляется указанием на совершение какого-либо действия. Окончание инструкции обозначается символом "точка с запятой" (;).

1
2
// инструкция объявления и инициализации переменной
var myNumber = 12;

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

1
2
первая инструкция
вторая инструкция

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

1
первая инструкция; вторая инструкция;

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

1
2
первая инструкция;
вторая инструкция;

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