为什么在if/else语句之后没有使用分号?

Ron*_*han 31 javascript if-statement

我理解在Javascript中的所有语句之后使用分号是很好的语法,但有没有人知道为什么if/else语句在大括号后不需要它们?

inv*_*sal 47

  • 分号用于结束一个语句
  • {}开始和结束一组陈述

基本上,if-else必须后跟一个陈述或一组陈述.

if-else 随后是一份声明:

if (condition) statement;
if (condition); // followed by a statement (an empty statement)
Run Code Online (Sandbox Code Playgroud)

if-else 然后是一组陈述:

if (condition) {
   statement;
   statement;
}

if (condition) {
   // followed by a group of statements of zero length
}
Run Code Online (Sandbox Code Playgroud)

if-else;如果后跟单个语句,则必须以a结尾.if-else并不是以后;跟一组语句;结束,因为它用于结束单个语句,并且不用于结束一组语句.

  • 我没有意识到"分号插入"(甚至不知道它存在),但我发现记住额外的规则只是为了每五到十行省略一次分号是有点傻.或者也许有使用它的优点,我不知道. (2认同)

Ira*_*ter 11

真正的答案是因为许多现代语言都从C语言中复制了它们的语法,C语言具有此属性.JavaScript是这些语言之一.

C允许语句块

 { ... }
Run Code Online (Sandbox Code Playgroud)

(不需要终止分号)可以在可以使用语句的地方使用.因此,您可以使用语句块作为then-和else-子句,而不使用分号.

如果你把一个单一的声明则-或else-子句中,你需要用分号来终止它.再次,就像在C中一样,额外的JavaScript扭曲; 在行的末尾是可选的,如果插入它不会导致语法错误.


Ora*_*ill 5

因为花括号本身就是终止字符.

这些标记包含一个复合语句块并且本质上是终止的.这就像在一个句子的末尾放一个句点,它向解析器发出信号,表明思想已经完成.

虽然完全是丑陋的,但在{}中包含每个语句并省略;