37

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

4

3 回答 3

53
  • 分号用于结束 ONE 语句
  • {}开始和结束一组语句

基本上,anif-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 结尾,;后面跟着一条语句。if-else不以;when 后跟一组语句结尾,因为;用于结束单个语句,不用于结束一组语句。

于 2013-06-11T03:50:24.340 回答
14

真正的答案是因为许多现代语言从具有此属性的 C 中复制了它们的语法。JavaScript 就是其中一种语言。

C 允许语句块

 { ... }

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

如果在 then- 或 else- 子句中放置一条语句,则需要用分号终止它同样,就像在 C 中一样,带有额外的 JavaScript 扭曲:在行尾是可选的,如果插入它不会导致语法错误。

于 2013-06-11T03:45:29.397 回答
8

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

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

虽然完全丑陋,但将每个语句包装在 {} 中并省略 ; 是有效的。

于 2013-06-11T03:40:33.253 回答