JavaScript中的'if'语句是否需要大括号?

rub*_*buc 31 javascript if-statement

可能重复:
JavaScript中的一行语句中是否需要花括号?

我几乎肯定这一点,但我想确保避免错误的代码.在JavaScript中,单个if语句需要大括号吗?

if(foo)
    bar;
Run Code Online (Sandbox Code Playgroud)

这个可以吗?

OM *_*ity 39

是的,它可以工作,但只是在'if'或'else'语句之后只有一行.如果需要使用多行,则需要花括号.

以下将有效

if(foo)
   Dance with me;
else
   Sing with me;
Run Code Online (Sandbox Code Playgroud)

以下将不会按您希望的方式工作.

if(foo)
   Dance with me;
   Sing with me;
else
   Sing with me;
   You don't know anything;
Run Code Online (Sandbox Code Playgroud)

但如果按照以下方式更正上述内容,那么它适用于您:

if(foo){
   Dance with me;
   Sing with me;
}else{
   Sing with me;
   You don't know anything; 
}
Run Code Online (Sandbox Code Playgroud)


use*_*621 27

虽然在语法上可以省略它们,但你不应该这样做.歧义严重的一个案例是

if (false)
    if (true) foo();
else
    bar();
Run Code Online (Sandbox Code Playgroud)

这将运行既不foo也不是bar因为else属于第二if陈述.使用大括号没问题:

if (false) {
    if (true) { foo(); }
} else {
    bar();
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为歧义问题被夸大了,特别是当它被用作反对省略大括号的论据时.当编写单个语句/表达式/句法"复合",例如`if(...)`每行(无论如何应该按照代码可读性的参数),它永远不会成为一个问题,因为一个人会自动使用多行的大括号. (6认同)
  • 如果是双重加1,今天就被这个击中了. (3认同)

Tom*_*lak 5

是的,它在语法上是有效的。但这被认为是不好的风格。

如果你把它写在一行上,你可能会说在某些情况下这是可以的,因为它是明确的。

 if (foo) bar;
Run Code Online (Sandbox Code Playgroud)

但在大多数情况下,使用大括号可以提高代码的清晰度,这是一件好事。代码的阅读次数多于编写次数,因此代码应该尽可能明确。

另外,如果您在某些时候需要添加第二条语句,那么无论如何您肯定都需要花式。