9 полезных сокращений в синтаксисе JavaScript


Содержание

Синтаксис JavaScript

Синтаксисом языка программирования называется набор правил написания кода программы.

Инструкции и точка с запятой

Любой программный код состоит из частей, как дом из кирпичиков. Эти части программы называются инструкциями. Инструкция — в программировании, команда языка программирования, которой устанавливается только один определенный шаг процесса выполнения программы. В языке программирования PHP каждая инструкция заканчивается точкой с запятой. В JavaScript точка с запятой не всегда обязательна.

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

Давайте рассмотрим пример.

Этот код не покажит ничего потому что в нём ошибка. Ошибка в последней строке, тут после певой инструкции document.write() не стоит точка с запятой.

Вот исправленный рабочий пример:

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

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

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

Синтаксис комментариев

Подробно эта тема раскрыта в статье комментарии в JavaScript. Тут только кратко отметим что комментарии могут быть однострочные и многострочные. Вот их синтаксис:

Синтаксис переменных

В языке программирования PHP переменная должна начинаться со знака $. В JavaScript нет таких идентификационных символов переменных. Но в отношении переменных действуют следующие правила:

  • Имена переменных в JavaScript могут включать только символы: a-z, A-Z, цифры, символ $, символ _ (знак подчёркивания). Использование любых других символов в имени переменной приведёт к ошибке.
  • Цифра не может быть первым символом в имени переменной.
  • JavaScript чувствителен к регистру, поэтому переменные myprice и myPrice — это разные переменные.
  • Ограничений на длину имени переменной в JavaScript нет.

Форум

Справочник

Поиск по форуму
Расширенный поиск
К странице.

Синтаксис

Инструкция : Блок
ИнструкцияПеременной
ПустаяИнструкция
ИнструкцияВыражение
ИнструкцияIf
ИнструкцияИтерации
ИнструкцияContinue
ИнструкцияBreak
ИнструкцияReturn
ИнструкцияWith
ИнструкцияСМеткой
ИнструкцияSwitch
ИнструкцияThrow
ИнструкцияTry

Инструкция может быть частью ИнструкцииСМеткой, которая тоже может являться частью ИнструкцииСМеткой, и так далее. Определённые таким образом метки совместно называются в описаниях семантики отдельных инструкций «текущим набором меток». ИнструкцияСМеткой не имеет никакого семантического предназначения кроме добавления новой метки к набору меток. Набор меток ИнструкцииИтерации или ИнструкцииSwitch изначально содержит единственный элемент пусто. Набор меток любой другой инструкции изначально пуст.

Значение нетерминала Блок : <> вычисляется по следующей схеме:

1. Вернуть (normal, empty, empty).

Значение нетерминала Блок : < СписокИнструкций > вычисляется по следующей схеме:

1. Вычислить значение СпискаИнструкций.

2. Вернуть Результат(1).

Значение нетерминала СписокИнструкций : Инструкция вычисляется по следующей схеме:

1. Вычислить значение Инструкции.

2. Если было брошено исключение, вернуть (throw, V, empty), где V - исключение. (Далее выполнение продолжается, как будто исключения брошено не было.)

3. Вернуть Результат(1).

Значение нетерминала СписокИнструкций : СписокИнструкций Инструкция вычисляется по следующей схеме:

1. Вычислить значение СпискаИнструкций.

2. Если Результат(1) является неожиданным завершением, вернуть Результат(1).

3. Вычислить значение Инструкции.

4. Если было брошено исключение, вернуть (throw, V, empty), где V - исключение. (Далее выполнение продолжается, как будто исключения брошено не было.)

5. Если Результат(3). значение равно empty, приравнять V = Результат(1). значение, иначе приравнять V = Результат(3). значение.

6. Вернуть (Результат(3). тип, V, Результат(3). цель).

ИнструкцияПеременной : var СписокОбъявленияПеременных ; СписокОбъявленияПеременных : ОбъявлениеПеременной
СписокОбъявленияПеременных
, ОбъявлениеПеременной СписокОбъявленияПеременныхБезIn : ОбъявлениеПеременнойБезIn
СписокОбъявленияПеременныхБезIn
, ОбъявлениеПеременнойБезIn ОбъявлениеПеременной : Идентификатор Инициализаторопц ОбъявлениеПеременнойБезIn : Идентификатор ИнициализаторБезInопц Инициализатор : = ВыражениеПрисваивания ИнициализаторБезIn : = ВыражениеПрисваиванияБезIn

Если инструкция переменной встречается внутри ОбъявленияФункции, переменные объявляются внутри локальной области видимости для данной функции согласно описанию в разделе 10.1.3. В противном случае они объявляются в глобальной области видимости (т.е. создаются как поля глобального объекта согласно описанию в разделе 10.1.3) с использованием атрибутов свойств < DontDelete >. Переменные создаются, когда происходит вход в область выполнения. Блок не определяет новой области выполнения. Только Программа и ОбъявлениеФункции создают новую область видимости. Переменные инициализируются при создании значением undefined. Переменной, для которой определён Инициализатор, присваивается значение его ВыраженияПрисваивания в момент выполнения ИнструкцииПеременной, а не в момент создания переменной.

Значение нетерминала ИнструкцияПеременной : var СписокОбъявленияПеременных ; вычисляется по следующей схеме:

1. Вычислить значение СпискаОбъявленияПеременных.

2. Вернуть (normal, empty, empty).

Значение нетерминала СписокОбъявленияПеременных :ОбъявлениеПеременной вычисляется по следующей схеме:

1. Вычислить значение ОбъявленияПеременной.

Значение нетерминала СписокОбъявленияПеременных : СписокОбъявленияПеременных , ОбъявлениеПеременной вычисляется по следующей схеме:

1. Вычислить значение СпискаОбъявленияПеременных.

2. Вычислить значение ОбъявленияПеременной.

Значение нетерминала ОбъявлениеПеременной : Идентификатор вычисляется по следующей схеме:

1. Вернуть строковое значение, содержащее ту же последовательность символов, что и Идентификатор.

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

1. Вычислить значение Идентификатора согласно описанию в разделе 11.1.2.

2. Вычислить значение Инициализатора.

4. Вызвать ЗаписатьЗначение(Результат(1), Результат(3)).

5. Вернуть строковое значение, содержащее ту же последовательность символов, что и Идентификатор.


Значение нетерминала Инициализатор : = ВыражениеПрисваивания вычисляется по следующей схеме:

1. Вычислить значение ВыраженияПрисваивания.

2. Вернуть Результат(1).

Значения нетерминалов СписокОбъявленияПеременныхБезIn, ОбъявлениеПеременнойБезIn и ИнициализаторБезIn вычисляются по той же схеме, что и СписокОбъявленияПеременных, ОбъявлениеПеременной и Инициализатор за исключением того, что значение вложенных СпискаОбъявленияПеременныхБезIn, ОбъявленияПеременнойБезIn, ИнициализатораБезIn и ВыраженияПрисваиванияБезIn вычисляются соответственно вместо вложенных СпискаОбъявленияПеременных, ОбъявленияПеременной, Инициализатора и ВыраженияПрисваивания.

Значение нетерминала ПустаяИнструкция : ; вычисляется по следующей схеме:

1. Вернуть (normal, empty, empty).

Заметим, что ИнструкцияВыражение не может начаться с открывающей фигурной скобки, т.к. тогда оно было бы неотличимо от Блока. Также ИнструкцияВыражение не может начинаться с ключевого слова function, т.к. тогда оно было бы неотличимо от ОбъявленияФункции.

Значение нетерминала ИнструкцияВыражение : [предпросмотр ∉ <<, function>] Выражение; вычисляется по следующей схеме:

1. Вычислить значение Выражения.

3. Вернуть (normal, Результат(2), empty).

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

Значение нетерминала ИнструкцияIf : if ( Выражение ) Инструкция else Инструкция вычисляется по следующей схеме:

1. Вычислить значение Выражения.

3. Вызвать ToBoolean(Результат(2)).

4. Если Результат(3) равен false - переход на шаг 7.

5. Вычислить значение первой Инструкции.

6. Вернуть Результат(5).

7. Вычислить значение второй Инструкции.

Значение нетерминала ИнструкцияIf : if ( Выражение ) Инструкция вычисляется по следующей схеме:

1. Вычислить значение Выражения.

3. Вызвать ToBoolean(Результат(2)).

4. Если Результат(3) равен false - вернуть (normal, empty, empty).

5. Вычислить значение Инструкции.

6. Вернуть Результат(5).

Инструкция итерации состоит из заголовка (который содержит ключевое слово и заключённую в скобки управляющую конструкцию) и тела (которое состоит из Инструкций).

Значение нетерминала do Инструкция while ( Выражение ); вычисляется по следующей схеме:

2. Вычислить значение Инструкции.

3. Если Результат(2). значение не равно empty, приравнять V = Результат(2). значение.

4. Если Результат(2). тип равен continue и Результат(2). цель принадлежит текущему набору меток - переход на шаг 7.

5. Если Результат(2). тип равен break и Результат(2). цель принадлежит текущему набору меток - вернуть (normal, V, empty).

6. Если Результат(2) является неожиданным завершением, вернуть Результат(2).

7. Вычислить значение Выражения.

9. Вызвать ToBoolean(Результат(8)).

10. Если Результат(9) равен true - переход на шаг 2.

11. Вернуть (normal, V, empty);

Значение нетерминала ИнструкцияИтерации : while ( Выражение ) Инструкция вычисляется по следующей схеме:

2. Вычислить значение Выражения.

4. Вызвать ToBoolean(Результат(3)).

4. Если Результат(4) равен false - вернуть (normal, V, empty).

6. Вычислить значение Инструкции.

7. Если Результат(6). значение не равно empty, приравнять V = Результат(6). значение.

8. Если Результат(6). тип равен continue и Результат(6). цель принадлежит текущему набору меток - переход на шаг 2.

9. Если Результат(6). тип равен break и Результат(6). цель принадлежит текущему набору меток - вернуть (normal, V, empty).

10. 2. Если Результат(6) является неожиданным завершением, вернуть Результат(6).

11. Переход на шаг 2.

Значение нетерминала ИнструкцияИтерации : for ( ВыражениеБезInопц ; Выражениеопц ; Выражениеопц) Инструкция вычисляется по следующей схеме:

1. Если ВыражениеБезIn опущено - переход на шаг 4.

2. Вычислить значение ВыраженияБезIn.

3. Вызвать ПолучитьЗначение(Результат(2)). (В дальнейшем это значение не используется.)

5. Если первое Выражение опущено - переход на шаг 10.

6. Вычислить значение первого Выражения.

8. Вызвать ToBoolean(Результат(7)).

9. Если Результат(8) равен false - переход на шаг 19.

10. Вычислить значение Инструкции.

11. Если Результат(10). значение не равно empty, приравнять V = Результат(10). значение.

12. Если Результат(10). тип равен break и Результат(10). цель принадлежит текущему набору меток - переход на шаг 19.

13. Если Результат(10). тип равен continue и Результат(10). цель принадлежит текущему набору меток - переход на шаг 15.


14. Если Результат(10) является неожиданным завершением, вернуть Результат(10).

15. Если второе Выражение опущено - переход на шаг 5.

16. Вычислить значение второго Выражения.

17. Вызвать ПолучитьЗначение(Результат(16)). (В дальнейшем это значение не используется.)

18. Переход на шаг 5.

19. Вернуть (normal, V, empty).

Значение нетерминала ИнструкцияИтерации : for (var СписокОбъявленияПеременныхБезIn ; Выражениеопц ; Выражениеопц ) Инструкция вычисляется по следующей схеме:

1. Вычислить значение СпискаОбъявленияПеременныхБезIn.

2. Пусть V = empty.

3. Если первое Выражение опущено - переход на шаг 8.

4. Вычислить значение первого Выражения.

6. Вызвать ToBoolean(Результат(5)).

7. Если Результат(6) равен false - переход на шаг 17.

8. Вычислить значение Инструкции.

9. Если Результат(8). значение не равно empty, приравнять V = Результат(8). значение.

10. Если Результат(8). тип равен break и Результат(8). цель принадлежит текущему набору меток - переход на шаг 17.

11. Если Результат(8). тип равен continue и Результат(8). цель принадлежит текущему набору меток - переход на шаг 13.

12. Если Результат(8) является неожиданным завершением, вернуть Результат(8).

13. Если второе Выражение опущено - переход на шаг 3.

14. Вычислить значение второго Выражения.

15. Вызвать ПолучитьЗначение(Результат(14)). (В дальнейшем это значение не используется.)

16. Переход на шаг 3.

17. Вернуть (normal, V, empty).

Значение нетерминала ИнструкцияИтерации : for ( ЛевостороннееВыражение in Выражение ) Инструкция вычисляется по следующей схеме:

1. Вычислить значение первого Выражения.

3. Вызвать ToObject(Результат(2)).

5. Получить имя следующего по очереди свойства Результата(3), которое не имеет свойства DontEnum. Если такого свойства нет - переход на шаг 14.

6. Вычислить значение ЛевостороннегоВыражения (оно может вычисляться на каждой итерации).

7. Вызвать ЗаписатьЗначение(Результат(6), Результат(5)).

8. Вычислить значение Инструкции.

9. Если Результат(8). значение не равно empty, приравнять V = Результат(8). значение.

10. Если Результат(8). тип равен break и Результат(8). цель принадлежит текущему набору меток - переход на шаг 14.

11. Если Результат(8). тип равен continue и Результат(8). цель принадлежит текущему набору меток - переход на шаг 5.

12. Если Результат(8) является неожиданным завершением, вернуть Результат(8).

13. Переход на шаг 5.

14. Вернуть (normal, V, empty).

Значение нетерминала ИнструкцияИтерации : for (var ОбъявлениеПеременнойБезIn in Выражение ) Инструкция вычисляется по следующей схеме:

1. Вычислить значение ОбъявлениеПеременнойБезIn.

2. Вычислить значение Выражения.

4. Вызвать ToObject(Результат(3)).

5. Пусть V = empty.

6. Получить имя следующего по очереди свойства Результата(4), которое не имеет свойства DontEnum. Если такого свойства нет - переход на шаг 15.

7. Вычислить значение Результата(1) как будто это Идентификатор, см. раздел 0 (да, оно может вычисляться на каждой итерации).

8. Вызвать ЗаписатьЗначение(Результат(7), Результат(6)).

9. Вычислить значение Инструкции.

10. Если Результат(9). значение не равно empty, приравнять V = Результат(9). значение.

11. Если Результат(9). тип равен break и Результат(9). цель принадлежит текущему набору меток - переход на шаг 15.

12. Если Результат(9). тип равен continue и Результат(9). цель принадлежит текущему набору меток - переход на шаг 6.

13. Если Результат(8) является неожиданным завершением, вернуть Результат(8).

14. Переход на шаг 6.

15. Вернуть (normal, V, empty).

Механизм обхода (перечисления) свойств (шаг 5 первого алгоритма, шаг 6 второго) зависит от конкретной реализации. Порядок обхода определяется объектом. Свойства обходимого объекта могут быть удалены во время обхода. Если свойство, которое ещё не было посещено, удаляется, то оно не будет посещено в оставшейся части обхода. Если новые свойства были добавлены к объекту во время перечисления, их посещение в оставшейся части обхода не гарантируется.

Цукерберг рекомендует:  Большие данные и умные города как подготовиться к будущему

Обход свойств объекта включает обход свойств его прототипа, прототипа прототипа и так далее рекурсивно. Однако свойство прототипа не обходится, если оно "перекрыто" свойством с тем же именем в каком-либо из объектов, предшествующих по иерархии прототипов.

Программа считается синтаксически некорректной, если выполнено одно из следующих условий:

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


Значение ИнструкцииContinue без Идентификатора вычисляется по следующей схеме:

1. Вернуть (continue, empty, empty).

Значение ИнструкцииContinue с опциональным Идентификатором вычисляется по следующей схеме:

1. Вернуть (continue, empty, Идентификатор).

Программа считается синтаксически некорректной, если выполнено одно из следующих условий:

  • Программа содержит инструкцию break без опционального Идентификатора, которая не является прямо или непрямо (но без пересечения границ функций) вложенной в ИнструкциюИтерации или ИнструкциюSwitch.
  • Программа содержит инструкцию continue с опциональным Идентификатором, но такого Идентификатора нет в наборе меток Инструкции, окружающей (без пересечения границ функций) инструкцию break.

Значение ИнструкцииBreak без Идентификатора вычисляется следующим образом:

1. Вернуть (break, empty, empty).

Значение ИнструкцииBreak с Идентификатором вычисляется следующим образом:

1. Вернуть (break, empty, Идентификатор).

Программа считается синтаксически некорректной, если она содержит инструкцию return вне ТелаФункции. Инструкция return заставляет функцию прекратить своё выполнение и вернуть значение вызывающему. Если Выражение опущено, возвращается значение undefined. В прочих случаях возвращается значение Выражения.

Значение нетерминала ИнструкцияReturn : return [здесь нет КонцаСтроки] Выражениеопц ; вычисляется по следующей схеме:

1. Если Выражение опущено - вернуть (return, undefined, empty).

2. Вычислить значение Выражения.

4. Вернуть (return, Результат(3), empty).

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

Значение нетерминала ИнструкцияWith : with ( Выражение ) Инструкция вычисляется по следующей схеме:

1. Вычислить значение Выражения.

3. Вызвать ToObject(Результат(2)).

4. Добавить Результат(3) к началу иерархии областей видимости.

5. Вычислить значение Инструкции, используя изменённую иерархию областей видимости с шага 4.

6. Пусть C = Результат(5). Если на шаге 5 было брошено исключение, приравнять C = (throw, V, empty), где V - брошенное исключение. (Далее выполнение продолжается, как будто исключения брошено не было.)

7. Убрать Результат(3) из начала иерархии областей видимости.

ЗАМЕЧАНИЕ
Каким бы образом управление не покинуло вложенную 'Инструкцию': нормальным путём, неожиданным завершением или бросив исключение - иерархия областей видимости всегда возвращается к первоначальному состоянию
.

Значение нетерминала ИнструкцияSwitch : switch ( Выражение ) БлокCase вычисляется по следующей схеме:

1. Вычислить значение Выражения.

3. Вычислить значение БлокаCase, передав Результат(2) в качестве параметра.

4. Если Результат(3). тип равен break и Результат(2). цель принадлежит текущему набору меток - вернуть (normal, Результат(3).значение, empty).

5. Вернуть Результат(3).

Значение нетерминала БлокCase : < ВетвиCaseопц > с учётом входного параметра input вычисляется следующим образом:

1. Пусть V = empty.
2. Пусть A равно списку ВетвейCase в порядке исходного текста.
3. Пусть C равно следующей ВетвиCase в A . Если такой ВетвиCase не нашлось - переход на шаг 16.
4. Вычислить значение C .
5. Если input не равен Результату(4) (согласно определению оператора !== ) - переход на шаг 3.
6. Если у C нет СпискаИнструкций - переход на шаг 10.
7. Вычислить значение СпискаИнструкций C и приравнять R результат.
8. Если R - неожиданное завершение, вернуть R .
9. Пусть V = R .значение.
10. Пусть C - следующая ВетвиCase из A . Если такой ВетвиCase не нашлось - переход на шаг 16.
11. Если у C нет СпискаИнструкций - переход на шаг 10.
12. Вычислить значение СпискаИнструкций C , получив результат R .
13. Если R .значение не равно empty, приравнять V = R .значение.
14. Если R - неожиданное завершение, вернуть ( R .тип, V , R .цель).
15. Переход на шаг 10.
16. Вернуть (normal, V , empty).

Значение нетерминала БлокCase : < ВетвиCaseопц ВетвьПоУмолчанию ВетвиCaseопц > с учётом входного параметра input вычисляется следующим образом:

1. Пусть V = empty.
2. Пусть A - список ВетвейCase в первом элементе ВетвиCase в порядке исходного текста.
3. Пусть C - следующая ВетвьCase в A . Если такой ВетвиCase не нашлось - переход на шаг 11.
4. Вычислить значение C .
5. Если input не равен Результату(4) (согласно определению оператора !== ) - переход на шаг 3.
6. Если у C нет СпискаИнструкций - переход на шаг 20.
7. Вычислить значение СпискаИнструкций C , получив результат R .
8. Если R - неожиданное завершение, вернуть R .
9. Пусть V = R .значение.
10. Переход на шаг 20.
11. Пусть B - список ВетвейCase во втором элементе ВетвиCase в порядке исходного текста.
12. Пусть C - следующая ВетвьCase в B . Если такой ВетвиCase не нашлось - переход на шаг 26.
13. Вычислить значение C .
14. Если input не равен Результату(13) (согласно определению оператора !== ) - переход на шаг 12.
15. Если у C нет СпискаИнструкций - переход на шаг 31.
16. Вычислить значение СпискаИнструкций C , получив результат R .
17. Если R - неожиданное завершение, вернуть R .
18. Пусть V = R .значение.
19. Переход на шаг 31.
20. Пусть C - следующая ВетвьCase в A . Если такой ВетвиCase не нашлось - переход на шаг 26.
21. Если у C нет СпискаИнструкций - переход на шаг 20.
22. Вычислить значение СпискаИнструкций C , получив результат R .
23. Если R .значение не равно пусто, приравнять V = R .значение.
24. Если R - неожиданное завершение, вернуть ( R .тип, V , R .цель).
25. Переход на шаг 20.
26. Если у ВетвиПоУмолчанию нет СпискаИнструкций - переход на шаг 30.
27. Вычислить значение СпискаИнструкций ВетвиПоУмолчанию , получив результат R .
28. Если R .значение не равно пусто, приравнять V = R .значение.
29. Если R - неожиданное завершение, вернуть ( R .тип, V , R .цель).
30. Пусть B равно списку ВетвейCase во втором элементе ВетвиCase в порядке исходного текста.
31. Пусть C - следующая ВетвьCase в B . Если такой ВетвиCase не нашлось - переход на шаг 37.
32. Если у C нет СпискаИнструкций - переход на шаг 31.
33. Вычислить значение СпискаИнструкций C , получив результат R .
34. Если R .значение не равно пусто, приравнять V = R .значение.
35. Если R - неожиданное завершение, вернуть ( R .тип, V , R .цель).
36. Переход на шаг 31.
37. Вернуть (normal, V , empty).

Значение нетерминала ВетвьCase : case Выражение : СписокИнструкцийопц вычисляется по следующей схеме:

1. Вычислить значение Выражения.

3. Вернуть Результат(2).

ЗАМЕЧАНИЕ
При получении значения ВетвиCase соответствующий ей СписокИнструкций не выполняется. Просто вычисляется и возвращается значение Выражения, которое используется БлокомCase для выбора СпискаИнструкций, который следует начать исполнять
.

12.12 Инструкции с метками

Перед Инструкцией может быть указана метка. Инструкции с метками используются только совместно с инструкциями break и continue, для которых были указаны метки перехода. В ECMAScript нет оператора goto.

Программа на ECMAScript считается синтаксически некорректной, если она содержит ИнструкциюСМеткой, которая находится внутри ИнструкцииСМеткой с таким же Идентификатором в качестве метки. Исключение составляют метки, содержащиеся внутри ОбъявленийФункций, находящихся внутри инструкций с метками.

Значение нетерминала Идентификатор : Инструкция вычисляется путём добавления Идентификатора к набору меток Инструкции и затем вычисления Инструкции. Если у ИнструкцииСМеткой уже есть непустой набор меток, эти метки тоже добавляются к набору меток Инструкции перед вычислением её значения. Если результат вычисления значения Инструкции равен (break, V, L), где L равно Идентификатору, результатом вычисления нетерминала становится (normal, V, empty).

Перед вычислением значения ИнструкцииСМеткой, содержащаяся в ней Инструкция считается содержащей пустое множество меток, кроме тех случаев, когда это ИнструкцияИтерации или ИнструкцияSwitch. Тогда она считается имеющей множество меток, состоящее из одного элемента пусто.

ИнструкцияThrow : throw [здесь нет КонцаСтроки] Выражение ;

Значение нетерминала ИнструкцияThrow : throw [здесь нет КонцаСтроки] Выражение ; вычисляется по следующей схеме:

1. Вычислить значение Выражения.

3. Вернуть (throw, Результат(2), empty).

Инструкция try используется для заключения в себе блока кода, в котором может наступить исключительное состояние, такое как ошибка выполнения или инструкция throw. Раздел catch содержит код обработки исключения. Когда раздел catch ловит исключение, его Идентификатор привязывается к этому исключению.

Значение нетерминала ИнструкцияTry : try Блок Catch вычисляется по следующей схеме:

1. Вычислить значение Блока.

2. Если Результат(1). тип не равен throw - вернуть Результат(1).

3. Вычислить значение Catch с параметром Результат(1).

4. Вернуть Результат(3).

Значение нетерминала ИнструкцияTry : try Блок Finally вычисляется по следующей схеме:

1. Вычислить значение Блока.

2. Вычислить значение Finally.

3. Если Результат(2).тип равен normal, вернуть Результат(1).


4. Вернуть Результат(2).

Значение нетерминала ИнструкцияTry : try Блок Catch Finally вычисляется по следующей схеме:

1. Вычислить значение Блока.

2. Пусть C = Результат(1).

3. Если Результат(1). тип не равен throw - переход на шаг 6.

4. Вычислить значение Catch с параметром Результат(1).

5. Пусть C = Результат(4).

6. Вычислить значение Finally.

7. Если Результат(6). тип равно normal - вернуть C.

8. Вернуть Результат(6).

Значение нетерминала Catch : catch (Идентификатор ) Блок вычисляется по следующей схеме:

1. Пусть C равно параметру, переданному этому нетерминалу.

2. Создать новый объект, как он был бы создан выражением new Object().

3. Создать свойство в объекте Результат(2). Имя свойства Идентификатор, значение равно C. значение, атрибуты равны < DontDelete >.

4. Добавить Результат(2) к началу иерархии областей видимости.

5. Вычислить значение Блока.

6. Убрать Результат(2) из начала иерархии областей видимости.

7. Вернуть Результат(5).

Значение нетерминала Finally : finally Блок вычисляется по следующей схеме:

лабы по информатике, егэ

лабораторные работы и задачи по программированию и информатике, егэ по информатике

Javascript урок 1. Внедрение сценариев в HTML

1. Добавление сценариев Javascript в HTML

Скрипты используются в html-страницах для увеличения функциональности и возможностей взаимодействия с посетителями сайта.

Для добавления сценария на страницу HTML используется дескриптор:

Или сегодня можно использовать упрощенный вариант:

Атрибуты дескриптора:

  • type — атрибут, пришедший на замену language ; он сообщает браузеру, какой язык используется внутри дескрипторов;
  • src — атрибут определяет URL внешнего исходного JavaScript-файла, сценарий которого прикрепляется к html-странице.

JavaScript - Синтаксис

JavaScript может быть реализован с помощью операторов JavaScript, которые помещаются в теги HTML script . /script на веб-странице.

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

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

Тег скрипта содержит два важных атрибута -

  • Язык - этот атрибут указывает, какой язык сценариев вы используете. Как правило, его значение будет javascript. Хотя недавние версии HTML (и XHTML, его преемник) прекратили использование этого атрибута.
  • Тип. Этот атрибут теперь рекомендуется для указания используемого языка сценариев, и его значение должно быть установлено на «text / javascript».

Таким образом, ваш сегмент JavaScript будет выглядеть следующим образом:

Ваш первый скрипт JavaScript

Возьмем пример для распечатки «Hello World». Мы добавили дополнительный комментарий HTML, который окружает наш код JavaScript. Это чтобы сохранить наш код из браузера, который не поддерживает JavaScript. Комментарий заканчивается «// ->». Здесь «//» означает комментарий в JavaScript, поэтому мы добавляем это, чтобы браузер не читал конец комментария HTML как часть кода JavaScript. Затем мы вызываем функцию document.write , которая записывает строку в наш HTML-документ.

Эта функция может использоваться для записи текста, HTML или обоих. Взгляните на следующий код.

Этот код даст следующий результат:

Пробелы и разрывы строк

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

Точки с запятой в JavaScript

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

Но при форматировании в одной строке следующим образом, вы должны использовать точки с запятой -

Примечание. Хорошая практика программирования заключается в использовании точек с запятой.

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

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

Таким образом, идентификаторы Time и TIME будут передавать различные значения в JavaScript.

ПРИМЕЧАНИЕ. Следует соблюдать осторожность при написании имен переменных и функций в JavaScript.

Комментарии в JavaScript

JavaScript поддерживает как комментарии стиля C, так и C ++. Таким образом,

  • Любой текст между // и концом строки рассматривается как комментарий и игнорируется JavaScript.
  • Любой текст между символами / * и * / рассматривается как комментарий. Это может охватывать несколько строк.
  • JavaScript также распознает последовательность открытия комментариев HTML "
  • Последовательность закрытия комментариев HTML -> не распознается JavaScript, поэтому ее следует записывать как // ->.
Цукерберг рекомендует:  Тесты - Раздел Тесты

пример

В следующем примере показано, как использовать комментарии в JavaScript.


JavaScript Синтаксис

Синтаксис JavaScript — это набор правил, как строятся программы JavaScript:

Значения JavaScript

Синтаксис JavaScript определяет два типа значений: фиксированные значения и значения переменных.

Фиксированные значения называются литералами. Переменные значения называются переменными.

Литералы JavaScript

Наиболее важными правилами для написания фиксированных значений являются:

Номера пишутся с десятичными знаками или без них:

Строки — это текст, написанный в двойных или одинарных кавычках:

Переменные JavaScript

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

JavaScript использует ключевое слово var для объявления переменных.

знак равенства используется для присвоения значений переменным.

В этом примере x определяется как переменная. Затем x присваивается (задается) значение 6:

JavaScript Operators

Для вычисления значений JavaScript использует арифметические операторы (+-*/):

JavaScript использует оператор присваивания (=) для присвоения значений переменным:

Выражения JavaScript

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

Вычисление называется оценкой.

Например, 5 * 10 оценивается в 50:

Выражения могут также содержать значения переменных:

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

Например, "John" + "" + "Doe", оценивается как "John Doe":

Ключевые слова JavaScript

Ключевые слова JavaScript используются для определения выполняемых действий.

Ключевое слово var сообщает обозревателю о создании переменных:

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

Не все операторы JavaScript "выполняются".

Код после двойной косой черты // или между /* и */ обрабатывается как Комментарий.

Комментарии игнорируются и не будут выполняться:

var x = 5; // I will be executed

// var x = 6; I will NOT be executed

Вы узнаете больше о комментариях в более поздней главе.

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

Идентификаторы — это имена.

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

Правила для юридических имен во многих языках программирования одинаковы.

В JavaScript первый знак должен быть буквой или символом подчеркивания (_) или символом доллара ($).

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

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

JavaScript чувствителен к регистру

Все идентификаторы JavaScript чувствительнык регистру.

Переменные Фамилия и Фамилия, являются двумя различными переменными.

JavaScript не интерпретирует var или var как ключевое слово var.

JavaScript и верблюда случае

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

Дефисы:

имя, фамилия, мастер-карта, Интер-Сити.

Дефисы не допускаются в JavaScript. Они зарезервированы для вычитания.

Подчеркнуть:

фирст_наме, ласт_наме, мастер_кард, интер_Цити.

Верхний случай верблюда (случай Паскаля):

Имя, фамилия, MasterCard, междугородный.

Нижняя верблюда случае:

JavaScript программисты, как правило, используют Camel случае, который начинается с строчной буквы:

имя, фамилия, masterCard, междугородный.


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

JavaScript использует кодировку Юникода .

Unicode охватывает (почти) все символы, знаки препинания и символы в мире.

Для более пристального взгляда, пожалуйста, изучите нашу полную справку Unicode.

IT-блог о веб-технологиях, серверах, протоколах, базах данных, СУБД, SQL, компьютерных сетях, языках программирования и создание сайтов.

Лексическая структура 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 – это не 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 символы. В JavaS cript используется набор символов 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 ES6 — синтаксис оператора spread (…)

Синтаксис оператора spread

  1. Синтаксис оператора spread это просто три точки: …
  2. Оператор spread позволяет расширять выражения в тех местах, где предусмотрено использование нескольких аргументов.

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

Пример №1 — Добавление массивов

Взгляните на код ниже. Здесь мы не используем оператор spread:

Выше мы создали массив под именем mid. Затем мы создали еще один массив, который содержит наш массив mid. И в конце мы вывели результат. Что вы ожидали от вывода arr? Результат в итоге следующий:

Вы ожидали такой же результат?

Вставив массив mid в массив arr, в итоге мы получили массив, содержащий в себе другой массив. Это здорово, если это было нашей целью, но что если я хочу получить один массив со значениями от 1 до 6? Чтобы достичь этого мы можем использовать синтаксис spread. Помните, синтаксис spread позволяет расширять элементы нашего массива.

Посмотрим на код ниже. Все тоже самое — кроме того, что теперь мы используем оператор spread для вставки массива mid в массив arr:

И в результате мы получим:

Помните определение оператора spread, которое вы прочитали только что выше? Вот когда он вступает в игру. Как вы видите, когда мы создаем массив arr и используем оператор spread перед массивом mid, происходит не просто вставка массива mid, а массив mid расширяется (раскрывается). Это расширение означает, что каждый элемент массива mid вставляется в массив arr. Вместо вложенного массива мы получим один массив с элементами от 1 до 6.

Пример №2 — Математика

JavaScript имеет встроенный математический объект, который позволяет нам делать некоторые забавные математические вычисления. В этом пример мы рассмотрим на Math.max(). Функция Math.max () возвращает наибольшее число из списка аргументов. Вот несколько примеров:

Как вы можете видеть, если вы хотите получить максимальное число из нескольких значений, то необходимо передать эти значения в Math.max(). К сожалению вы не можете использовать массив в качестве входного параметра. До появление оператора spread самым простым способом использовать Math.max() с массивом было применение метода .apply()

Это работает, но только это раздражает.

Теперь посмотрим как мы сделаем тоже самое, но с оператором spread:

Вместо того, чтобы создавать функцию и использовать метод apply для возврата результата Math.max(), мы можем написать только две строки кода! Синтаксис spread разворачивает наш массив и передает каждый элемент массива отдельно в метод Math.max().

Пример №3 — Копирование массива

В JavaScript вы не можете просто скопировать массив, установив новую переменную, равную уже существующему массиву. Рассмотрим следующий пример кода:

В результате вы получите:

На первый взгляд кажется, что это сработало — похоже, мы скопировали значения массива arr в массив arr2. Но в действительности это не так. Понимаете, когда вы работаете с объектами в JavaScript (а массив — это объект) происходит присваивание по ссылке, а не по значению. Это означает, что arr2 присваивается той же ссылке, что и arr. Другими словами, все, что мы делаем для arr2, также повлияет на исходный массив arr (и наоборот). Посмотрим код ниже:

Выше мы добавили новый элемент d в arr2. Тем не менее, когда мы выводим содержимое массива arr, мы видим, что значение d также добавилось в этот массив:

Не нужно бояться! Мы можем использовать оператор распространения!

Рассмотрим приведенный ниже код. Это почти то же самое, что и выше. Вместо этого мы использовали оператор spread в квадратных скобках:

В результате мы видим:

Цукерберг рекомендует:  Java - Нужна срочная помощь про программе eclipse.

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

Опять же, это работает так, потому что значения arr расширяются, чтобы заполнить скобки нашего определения массива arr2. Таким образом, мы добавляем в arr2 элементы отдельными значениями из arr вместо копирования ссылки на arr, как это было в первом примере.

Бонус пример — преобразование строки в массив

В качестве забавного заключительного примера вы можете использовать синтаксис spread для преобразования строки в массив. Просто используйте синтаксис spread в паре квадратных скобок:

В результате получим:

Круто, не так ли?

Совместимость с настольными браузерами

Совместимость с мобильными браузерами

Тема 1. Структура и синтаксис языка JavaScript

Методические рекомендации для преподавателя и студентов


Клиентская часть среды проектирования Web-приложений содержит следующие основные компоненты:

1. Браузер (или обозреватель), отображающий HTML-документ на экране монитора и являющийся пользовательским интерфейсом для Web- приложений;

2. Язык HTML (Hyper Text Markup Language), с помощью которого создаются Web-страницы;

3. Языки сценариев. В настоящее время в качестве стандарта принят язык JavaScript;

4. Клиентские расширения, такие как элементы управления ActivX, Java-аплеты, подключаемые модули и др.

Для понимания рассматриваемого материала предполагается знание основ HTML, умение работать в среде браузера.

Язык сценариев JavaScript предназначен для создания интерактивных HTML-документов. С помощью сценариев поддерживается диалог с пользователем, обеспечивается привлекательный вид Web-страниц, осуществляется навигация по страницам сайта, поиск элементов на странице и многое другое. Основой языка является понятие объекта. JavaScript может быть внедрен в HTML- документ, обеспечивает работу в среде, поддерживаемой браузерами.

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

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

Язык JavaScript непрерывно развивается, существуют несколько версий языка и разрабатываются новые. Наиболее используемые в настоящее время браузеры Internet Explorer и Netscape Navigator в разных объемах поддерживают язык сценариев JavaScript. Возможности браузеров зависят от их версий. Каждая следующая версия браузера поддерживает и те версии JavaScript, которые использовались в предыдущих его версиях. В теге

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Как то на паре, один преподаватель сказал, когда лекция заканчивалась - это был конец пары: "Что-то тут концом пахнет". 8382 - | 8011 - или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Синтаксис JavaScript

Определение синтаксиса

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

Инструкции в JavaScrtipt

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

Инструкцию можно сравнить с предложением в русском языке. Каждая инструкция как и предложение имеет начало и конец, несет в себе определенную смысловую нагрузку, а также имеет специальный символ - разделитель, по наличию, которого можно судить о конце одной инструкции и начале другой. Если в русском языке в качестве разделителя предложений выступает символ - . (точка), то в JavaScritp для разделения инструкций используют символ - ; (точка с запятой).

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

JavaScript :: Синтаксис

Лексическая структура и лексемы

В данном пункте мы рассмотрим лексическую структуру JavaScript и начнем с определения.

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

Каждое отдельное правило в лексической структуре языка программирования называют . Она представляет собою минимальную единицу кода программы, которая имеет для интерпретатора определенный смысл и не может быть разбита на более мелкие логические части. К лексемам относятся литералы, идентификаторы, ключевые слова, знаки операторов и т.д. Пусть, например, у нас есть инструкция 'var b=5;' , которая объявляет переменную и присваивает ей значение в виде числа 5 . Эту инструкцию мы можем разбить на минимальные логические единицы, т.е. лексемы: ключевое слово 'var' (служит для объявления переменной), идентификатор 'b' (т.е. имя переменной), оператор присваивания '=' (в программировании знак равно используется не для сравнения, а для присвоения какого-либо значения), число '5' и знак ';' (точка с запятой используется программистами для разделения инструкций).

Литералы в JavaScript

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

В качестве примеров приведем литералы, которые являются значениями различных типов данных: число 3.4 , число 5 в примере выше, строка в двойных кавычках "яблоко" , строка в одинарных кавычках 'две груши' , логические значения true и false , литерал регулярного выражения /javascript/gi , инициализатор объекта или инициализатор массива [1,2,3] и т.д.

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

- это просто имена (например, переменных или функций). В JavaScript идентификаторы чувствительны к регистру символов, должны начинаться с буквы, знака подчеркивания '_' или знака доллара '$' , после чего могут следовать любые буквы, цифры, символы подчеркивания или знаки доллара. При этом с цифры идентификаторы начинаться не должны, иначе интерпретатор не сможет отличить их от чисел.

Примерами идентификаторов могут служить: b (латинская буква), $b (начинается со знака доллара), _b (начинается со знака подчеркивания), $2b (включает цифру), ч (русская буква), _Чаво (начинается со знака подчеркивания и включает русские буквы, одна из которых заглавная), $G (начинается со знака доллара и включает заглавную латинскую букву), js_2 (разделяем буквы и цифру знаком подчеркивания), джаваScript (идентификатор из русских и латинских букв, записанный в 'верблюжей' нотации), магазин_shop (идентификатор из русских и латинских букв, записанный в 'змеиной' нотации) и т.д.

В то же время комбинации символов 15var_1 , :Var_2 или var 3 не могут использоваться в качестве идентификаторов, т.к. они начинаются либо содержат недопустимые символы (имя третьего идентификатора содержит пробел). Также следует помнить про регистр используемых символов, поскольку, например, идентификаторы var_1 , Var_1 и VAR_1 обозначают имена совершенно разных переменных или функций, т.к. регистр символов у них не совпадает.

Для лучшего восприятия кода следует давать идентификаторам понятные и по возможности краткие названия, которые бы соответствовали, например, хранящимся в переменных данным или же выполняемым функциями действиям. Кроме того, идентификаторы могут состоять не только из одной буквы, но даже из нескольких слов. Для таких случаев в программировании существуют два распространенных устоявшихся стиля записи идентификаторов, которые называются ( верблюжьяНотация ) и ( змеиная_нотация ). Если идентификатор состоит из одного слова, то в обоих случаях он пишется строчными буквами. При наличии двух и более слов, в 'верблюжей' нотации первое слово идентификатора пишется строчными буквами, а каждое последующее слово начинается с заглавной буквы. В 'змеиной' нотации все слова пишутся строчными буквами, но каждое последующее слово идентификатора отделяется от предыдущего знаком подчеркивания (см. пример №1). Что касается конкретно языка JavaScript , то в нем принято записывать идентификаторы в 'верблюжей' нотации, хотя при этом каждый программист сам решает какой стиль использовать. Также добавим, что смешивать два стиля никто не запрещает, однако в плане восприятия делать этого не рекомендуется.

Пример №1 Стили записи идентификаторов в JavaScript

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

Следует отметить еще один важный момент: JavaScript резервирует часть идентификаторов для ключевых слов самого языка, поэтому они не могут использоваться программистами в качестве идентификаторов. Например, зарезервированными являются слова: break , continue , function , for , if , return , new , null , this и т.д. Мы не будем приводить здесь полный список зарезервированных слов, т.к. со временем сможем познакомиться с ними в процессе изучения JavaScript .

Инструкции и точка с запятой в JavaScript

Как и во многих других языках программирования в JavaScript каждая (команда на языке JavaScript ) отделяется от других точкой с запятой ';' , которая обычно ставится в той же строке в конце каждой инструкции. Если инструкция является последней в программе либо далее идет закрывающая фигурная скобка '>' , то после нее точку с запятой разрешается не ставить. Также можно опускать точку с запятой между двумя соседними инструкциями, которые находятся на разных строках, но только в тех случаях, когда интерпретатор JavaScript однозначно не сможет продолжить синтаксический разбор следующей инструкции без точки с запятой (см. пример №2).

Пример №2 Порядок интерпретации точки с запятой в JavaScript

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

  • разрыв строки между ключевыми словами return , break или continue и выражениями, которые следуют сразу за ними, браузеры всегда преобразуют в точку с запятой (см. пример №3);

Пример №3 Разрывы строк и return, break, continue

  • при использовании операторов ++ (увеличивает значение на 1) и -- (уменьшает значение на 1) в постфиксной форме записи (т.е. когда они идут после выражения), их следует писать в той же строке, что и выражение, за которым они следуют, т.к. интерпретатор посчитает текущий префиксный оператор (т.е. идущий перед выражением), относящимся к выражению, которое следует далее за данным оператором (см. пример №4).

Пример №4 Разрывы строк и операторы ++ и --

Все перечисленные служебные слова и операторы мы конечно же подробно рассмотрим позже. Там же я дам и обратную ссылку на текущий материал, чтобы он стал уже окончательно понятен. Пока же просто имейте в виду, что желательно каждую отдельную инструкцию записывать на одной строке и отделять от следующей точкой с запятой.

Комментарии в JavaScript

Еще одной важной частью синтаксиса любого языка программирования являются комментарии. В JavaScript используются как однострочные комментарии, так и многострочные. Для однострочных комментариев используется комбинация символов '//' . Они идут только до конца строки и весь код после символов '//' интерпретатором игнорируется. Многострочные комментарии представляют собой любой текст, расположенный между комбинациями символов '/*' и '*/' . Как следует из названия, многострочные комментарии могут содержать несколько строк, но при этом не могут быть вложенными друг в друга (см. пример №5).

Пример №5 Комментарии в JavaScript

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

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

В любом случае, комментарии ускоряют как разработку кода, так и его отладку в дальнейшем.

Форматирование javascript-кода

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

Понравилась статья? Поделиться с друзьями:
Все языки программирования для начинающих