JavaScript | Оператор do-while

Синтаксис оператора do-while

DoWhileStatement [Yield, Await, Return] :

do Statement [?Yield, ?Await, ?Return] while ( Expression [+In, ?Yield, ?Await] ) ;

 

Статическая семантика: ранние ошибки

DoWhileStatement : do Statement while ( Expression ) ;

Если IsLabelledFunction(Statement) истинно true, это синтаксическая ошибка.

Примечание

Это правило необходимо применять только в том случае, если реализовано расширение, указанное в B.3.2.

 

Семантика времени выполнения: DoWhile оценка цикла

С параметром labelSet.

DoWhileStatement : do Statement while ( Expression ) ;

1. Пусть V будет undefined.
Повторять,
 stmtResult будет результатом оценки Statement.
Если LoopContinues(stmtResultlabelSet) является false, вернуть Completion(UpdateEmpty(stmtResultV)).
Если stmtResult.[[Value]] не является empty, установить V на stmtResult.[[Value]].
 exprRef будет результатом оценки Expression.
 exprValue будет ? GetValue(exprRef).
 ! ToBoolean(exprValue) является false, вернуть NormalCompletion(V).

Как понять синтаксис оператора do-while? Последовательность действий для создания

  1. Шаг первый — пишем зарезервированное слово «do».
  2. Ставим пробел
  3. Ставим левую фигурную скобку
  4. Шаг второй — пишем один из 14 вариантов высказывания (Statement)
  5. Ставим правую фигурную скобку
  6. Ставим пробел
  7. Шаг третий — пишем зарезервированное слово «while».
  8. Ставим пробел
  9. Ставим левую круглую скобку
  10. Шаг четвёртый — пишем выражение (Expression)
  11. Ставим правую круглую скобку

 

Пример работы оператора do-while

BlockStatement может состоять из Block. Block может состоять из { StatementList }. В общем речь идёт о фигурных скобках.

var i = 0;
do {i++} while ( i < 5 );

// 5

До тех пор пока переменная i будет меньше пяти мы будем прибавлять к переменной i значение 1 (один). То есть мы сначала делаем, а потом проверяем условие. Когда условие выполнится, тогда мы уже НЕ будем делать.

По итогу переменная i будет равна 5 (пяти). А что означает цифра 4, которую показал браузер? Это количество итераций цикла do-while, при котором условие возвращало истину true.

Условие успешно проверено 4 раза и 1 раз неуспешно - do-while - JavaScript
Условие успешно проверено 4 раза и 1 раз неуспешно — do-while — JavaScript

Логика работы такова. Мы сначала присвоим переменой i значение 1, а потом первый раз успешно проверим условие. 2 — 2. 3 — 3. 4 — 4.

Дойдём до пятого преобразования. Выполним пятое преобразование. Потом в пятый раз проверим условие и оно окажется ложным. Цикл прекратится из-за лжи — делаться больше ничего не будет.

 

Варианты Statement — смотреть на сайте стандарта

BlockStatement
VariableStatement
EmptyStatement
ExpressionStatement
IfStatement
BreakableStatement
ContinueStatement
BreakStatement
[+Return]ReturnStatement
WithStatement
LabelledStatement
ThrowStatement
TryStatement
DebuggerStatement

Информационные ссылки

JavaScript | Зарезервированные слова (ReservedWord)

Алгоритмические обозначения

Условные обозначения

Стандарт ECMAScript — Раздел «12.6.2 Keywords and Reserved Words» — https://tc39.es/ecma262/#prod-ReservedWord

Стандарт ECMAScript — Раздел «14.7.2 The do-while Statement» — https://tc39.es/ecma262/#sec-do-while-statement

 

Поделись записью