пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Базовый синтаксис JavaScript

  1. Базовый синтаксис JavaScript

Синтаксис

Update: Более новый материал по этой теме находится по адресу http://es5.javascript.ru.

12 Инструкции

Синтаксис

Инструкция :

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

Семантика

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

12.1 Блок

Синтаксис

Блок :

{ СписокИнструкцийопц }

СписокИнструкций :

Инструкция 
СписокИнструкций Инструкция

Семантика

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

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). цель).

12.2 Выражение переменной

Синтаксис

ИнструкцияПеременной :

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. Вычислить значение Инициализатора.

3. Вызвать ПолучитьЗначение(Результат(2)).

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

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

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

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

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

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

12.3 Пустая инструкция

Синтаксис

ПустаяИнструкция :

;

Семантика

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

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

12.4 Инструкция-выражение

Синтаксис

ИнструкцияВыражение :

[предпросмотр ∉ {{, function}] Выражение ;

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

Семантика

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

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

2. Вызвать ПолучитьЗначение(Результата(1)).

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

12.5 Инструкция if

Синтаксис

ИнструкцияIf :

if ( Выражение ) Инструкция else Инструкция 
if ( Выражение ) Инструкция

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

Семантика

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

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

2. Вызвать ПолучитьЗначение(Результата(1)).

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

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

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

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

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

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

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

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

2. Вызвать ПолучитьЗначение(Результата(1)).

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

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

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

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

 


22.06.2017; 22:00
хиты: 155
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь