JavaScript 的单行语句中是否需要大括号?

新手上路,请多包涵

我曾经听说在单行语句中保留大括号可能对 JavaScript 有害。我不记得推理了,谷歌搜索也没有太大帮助。

在 JavaScript 中将所有语句括在大括号内是一个好主意吗?

我在问,因为每个人似乎都这样做。

原文由 Tower 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 458
2 个回答

但他们被推荐。如果您扩展声明,您将需要它们。

这是完全有效的

if (cond)
    alert("Condition met!")
else
    alert("Condition not met!")

但是,强烈建议您始终使用大括号,因为如果您(或其他人)扩展了语句,则需要大括号。

在所有带有花括号的 C 语法风格语言中都遵循同样的做法。 C、C++、Java,甚至PHP都支持一行不带大括号的语句。您必须意识到您只保存 了两个字符,而对于某些人的支撑风格,您甚至连一行都没有保存。我更喜欢全括号样式(如下所示),因此它往往会更长一些。您具有非常清晰的代码可读性这一事实很好地满足了权衡。

 if (cond)
{
    alert("Condition met!")
}
else
{
    alert("Condition not met!")
}

原文由 Josh K 发布,翻译遵循 CC BY-SA 2.5 许可协议

有一个可读性方面——当你有复合语句时,它会变得非常混乱。缩进有帮助,但对编译器/解释器没有任何意义。

 var a;
var b;
var c;

//Indenting is clear
if (a===true)
  alert(a); //Only on IF
alert(b); //Always

//Indenting is bad
if (a===true)
  alert(a); //Only on IF
  alert(b); //Always but expected?

//Nested indenting is clear
if (a===true)
  if (b===true)
    alert(a); //Only on if-if
alert (b); //Always

//Nested indenting is misleading
if (a===true)
  if (b===true)
    alert(a); //Only on if-if
  alert (b); //Always but expected as part of first if?

//Compound line is misleading
//b will always alert, but suggests it's part of if
if (a===true) alert(a);alert(b);
else alert(c); //Error, else isn't attached

然后是可扩展性方面:

 //Problematic
if (a===true)
  alert(a);
  alert(b); //We're assuming this will happen with the if but it'll happen always
else       //This else is not connected to an if anymore - error
  alert(c);

//Obvious
if (a===true) {
  alert(a); //on if
  alert(b); //on if
} else {
  alert(c); //on !if
}

想法是,如果你总是有括号,那么你就知道要在该块中插入其他语句。

原文由 Rudu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏