Синтаксис оператора 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(stmtResult, labelSet) является false, вернуть Completion(UpdateEmpty(stmtResult, V)). Если stmtResult.[[Value]] не является empty, установить V на stmtResult.[[Value]]. exprRef будет результатом оценки Expression. exprValue будет ? GetValue(exprRef). ! ToBoolean(exprValue) является false, вернуть NormalCompletion(V).
Как понять синтаксис оператора do-while? Последовательность действий для создания
- Шаг первый — пишем зарезервированное слово «do».
- Ставим пробел
- Ставим левую фигурную скобку
- Шаг второй — пишем один из 14 вариантов высказывания (Statement)
- Ставим правую фигурную скобку
- Ставим пробел
- Шаг третий — пишем зарезервированное слово «while».
- Ставим пробел
- Ставим левую круглую скобку
- Шаг четвёртый — пишем выражение (Expression)
- Ставим правую круглую скобку
Пример работы оператора do-while
BlockStatement может состоять из Block. Block может состоять из { StatementList }. В общем речь идёт о фигурных скобках.
var i = 0; do {i++} while ( i < 5 ); // 5
До тех пор пока переменная i будет меньше пяти мы будем прибавлять к переменной i значение 1 (один). То есть мы сначала делаем, а потом проверяем условие. Когда условие выполнится, тогда мы уже НЕ будем делать.
По итогу переменная i будет равна 5 (пяти). А что означает цифра 4, которую показал браузер? Это количество итераций цикла do-while, при котором условие возвращало истину true.

Логика работы такова. Мы сначала присвоим переменой 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