Почему точки с запятой не используются после операторов if/else?

Я понимаю, что хороший синтаксис использовать точки с запятой после всех операторов в Javascript, но кто-нибудь знает, почему операторы if/else не требуют их после фигурных скобок?

3 ответов


  • точка с запятой используется для завершения одного оператора
  • { и } начать и закрыть группу операторов

в общем,if-else должно сопровождаться либо утверждением, либо группой утверждений.

if-else с последующим заявлением:

if (condition) statement;
if (condition); // followed by a statement (an empty statement)

if-else затем группа высказываний:

if (condition) {
   statement;
   statement;
}

if (condition) {
   // followed by a group of statements of zero length
}

if-else должен заканчиваться на ; если за ним следует один оператор. if-else тут не заканчивается на ; когда следует группа утверждений, потому что ; используется для завершения одного оператора и не используется для завершения группы операторов.


реальный ответ заключается в том, что многие современные языки скопировали свой синтаксис из C, который имеет это свойство. JavaScript является одним из этих языков.

C разрешает блоки операторов

 { ... }

(которые не нуждаются в конечных точках с запятой) для использования там, где можно использовать операторы. Таким образом, вы можете использовать блоки операторов как предложения then - и else - без точек с запятой.

Если вы один оператор в предложении then - or else -, вам нужно завершите его точкой с запятой. Опять же, как и в C, с дополнительным поворотом JavaScript, который ; является необязательным в конце строки, если вставка не вызовет синтаксической ошибки.


потому что сами фигурные скобки являются символами завершения.

являются маркерами, которые заключают составной блок оператора и внутренне завершаются. Это как поставить точку в конце предложения, это сигнализирует парсеру, что мысль завершена.

будучи полностью уродливым, допустимо обернуть каждое утверждение В {} и опустить ;