Страницы

Поиск по вопросам

среда, 17 апреля 2019 г.

Допустимо ли размещать цикл внутри условия?

if (numStr[0] === '-') { result = negativeNum(numStr); } else { for (let i = length(numStr) - 1; i >= 0; i -= 1) { result += numStr[i]; } }


Ответ

Если обратиться к спецификации, конструкция if имеет следующий вид
if ( Expression ) Statement else Statement
В свою очередь Statement может быть следующими конструкциями:
Statement: BlockStatement VariableStatement EmptyStatement ExpressionStatement IfStatement BreakableStatement ContinueStatement BreakStatement ReturnStatement WithStatement LabelledStatement ThrowStatement TryStatement DebuggerStatement
В этом списке интересен BreakableStatement
BreakableStatement: IterationStatement SwitchStatement
Который в итоге приводит нас к циклам
IterationStatement: ... for(LexicalDeclaration Expression; Expression) Statement ...
Отсюда видно, что размещение цикла внутри любой из ветвей условного оператора вполне допустимо.

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

Отправить комментарий