【问题标题】:Why are semicolons not used after if/else statements?为什么 if/else 语句后不使用分号?
【发布时间】:2013-06-11 03:39:16
【问题描述】:

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

【问题讨论】:

  • while { } do 和 for () { } 也有这个属性。
  • 这是关于语言语法的。你知道那是什么,寻找“声明”here。
  • 这是一个关于语言语法的问题;我不明白为什么这应该被认为是非建设性的。
  • 读者:哇,这有效:-}问题不再关闭。

标签: javascript if-statement


【解决方案1】:
  • 分号用于结束 ONE 语句
  • { 和 } 开始和结束一组语句

基本上,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 后跟一组语句时不以; 结尾,因为; 用于结束单个语句,而不用于结束一组语句。

【讨论】:

  • 我不同意“即使 if-else 必须以 ; 结尾”。 javascript 中的任何语句都不需要以 ; 结尾供参考。没有严格的规定。
  • 任何不是上下文终止的语句(即通过花括号)都需要一个 ;
  • @Orangepill JavaScript 没有那么严格的规则,但还是推荐使用。
  • 我不知道“分号插入”(甚至不知道它存在),但我发现记住额外的规则只是为了省略一个分号而有点傻五到十行。或者也许使用它有我不知道的优势。
  • @invisal 我完全同意。我认为它被放在那里是为了早期对非程序员的宽容,但它往往只是通过让程序运行来掩盖错误,否则会出错。
【解决方案2】:

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

C 允许语句块

 { ... }

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 但是你可以省略 ;通过包装在 {}
    • 肯定不通过js lint
    猜你喜欢
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-11
    相关资源
    最近更新 更多