Является ли регистр по умолчанию в операторе switch необязательным? - PullRequest
2 голосов
/ 15 февраля 2012

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

ECMA-262, кажется, предполагает, что это не является обязательным, но Википедия говорит, что это так.

ECMA-262

SwitchStatement: switch ( Выражение ) CaseBlock

CaseBlock: { CaseClauses opt }

{ CaseClauses opt DefaultClause CaseClauses opt }

Википедия

case default: необязательно.

Означает ли Википедия, что вы можете буквально написать case default:, если хотите?

EDIT

Просто понял, что я неправильно читаю ECMA. Первый вариант блока case, т.е. { CaseClauses opt }, позволяет пропустить блок по умолчанию. Дело закрыто (если вы простите за каламбур).

Ответы [ 3 ]

6 голосов
/ 15 февраля 2012

A CaseBlock может быть или из следующих:

  • {CaseClauses opt }
  • {CaseClauses opt DefaultClause CaseClauses opt }

Это неуклюжий способ сказать, что может быть не более одного DefaultClause , и вы можете поместить его в любое место в CaseBlock .

0 голосов
/ 15 февраля 2012

Не является обязательным в стандарте ECMA.CaseBlock представляет либо или.

0 голосов
/ 15 февраля 2012

Это просто означает, что вам не нужно писать регистр по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...