【问题标题】:Javascript if statement-- no {} needed? [duplicate]Javascript if 语句——不需要 {}? [复制]
【发布时间】:2014-07-10 15:32:46
【问题描述】:

我现在正在通过 Udemy.com 上的 HTML5 项目课程工作,该人的示例代码如下:

//Use a timer to call paint function
        if(typeof game_loop != "undefined") clearInterval(game_loop);
        game_loop = setInterval(paint, speed);

我认为'if' 语句必须有花括号,这样如果'if' 语句为真,则里面的代码可以运行。请指教。谢谢

【问题讨论】:

  • 不需要,只要您只需要执行 1 条语句,但最好有它们以提高可读性
  • 天哪,我刚刚在 1 分钟前发布了这篇文章,并且收到了很多回复。其实我很抱歉,我只是做了一个搜索,并在上面找到了这个答案。感谢黄教。
  • @Smeegs 已编辑,我要先声明
  • 作为关于约定的旁注,如果包括 if (if (condition) do_something();) 在内的整个表达式适合单行,则有些人会省略大括号。一旦do_something() 太长而不能放在同一行,很多人会添加大括号以提高可读性,即使它们不需要。
  • 感谢,这对我理解 JS 来说是一大步。

标签: javascript if-statement curly-braces


【解决方案1】:

您可以将if 与任何单个语句一起使用,无论该语句是块语句还是任何其他类型。

ECMAScript 中if 语句的语法是:

IfStatement :

    if ( Expression ) Statement else Statement
    if ( Expression ) Statement

请注意,没有定义大括号。任何有效的陈述都是允许的。

这个:

 if (condition)
     then_case();
 else
     else_case();

评估与此相同:

 if (condition) {
     then_case();
 } else {
     else_case();
 }

如果你有多个语句,那么你需要一个块语句来包含它们。

 if (condition) {
     then_case();
     also_this();
 } else {
     else_case();
     also_that();
 }

有时你会看到类似的东西

 if (condition)
      then_case(), also_this();

评估,但丑陋。 (最好忘记我的最后一个例子。:-))

【讨论】:

  • @cookiemonster,抱歉没有警告我覆盖了你的更改。
【解决方案2】:

您的示例代码在语法上是正确的。假设您在 if/else 语句之后有一行代码,则可以省略括号。

if (condition)
    //Do something
else
    //Do something

很多人,包括我自己,都讨厌这种做法。在这里查看进一步的讨论:

【讨论】:

  • 我支持这个,它只会引发问题。保持代码简洁易读。
  • ECMAScript Harmony 中没有动议允许if condition { … },即省略括号吗?有谁知道那是怎么回事?
  • 许多人在合理使用时欣赏这种做法,因为它可以减少噪音。
  • @cookiemonster,这就是为什么我说很多人,而不是所有人。不确定这是否值得一票。我认为您应该阅读投票指南:stackoverflow.com/help/privileges/vote-down
  • 因为纯粹的意见会降低答案的质量。还要说假设您只有一行代码,您可以省略括号是不正确的。只要它们构成一个语句,您就可以有多行。并且括号不是 if 声明的一部分,所以这不是省略它们的问题。这是使用什么类型的语句的问题。答案的质量赢得了我的反对票。
【解决方案3】:

与其他 'c' 语法语言类似,如果语句只有一行,则可以省略上下文的范围。

例如

if(true)
    alert('hello');

等于

if(true) alert('hello');

等于

if(true){ alert('hello'); }

您可能还会看到另一种形式

var myBool = Boolean(someValue) ? false : true

【讨论】:

  • 这是我最喜欢的答案。谢谢,我还没有足够高的声誉来支持这个。
  • 感谢您的美言!
【解决方案4】:

如果你只有一个语句作为 if 或 else 的一部分,那么花括号是可选的。但是,如果您希望一组语句成为 if 或 else 主体的一部分,则必须使用花括号。

if(condition)
    //Only one statement
else if(condition2)
    //Only one statement
else
    //Only one statement

但在下文中,大括号是强制性的。

if(condition){
    //first statement
    //second statement
    .....
    //nth statement
}
else if(condition2){
    //first statement
    //second statement
    .....
    //nth statement
}
else{
    //first statement
    //second statement
    .....
    //nth statement
}

请注意,它不仅适用于 JavaScript,在大多数编程语言中也是如此,例如 C, C++, Java 等。

【讨论】:

    【解决方案5】:

    if 语句的单行结果不需要花括号。但是如果 if 语句的结果是多个语句,那么您将它们包裹在花括号中以识别它们。

    【讨论】:

      猜你喜欢
      • 2016-08-05
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      相关资源
      最近更新 更多